diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php
index e94f2e50c1d753bf1a337528659552f1e7728bd1..70208725f4636cb32b9f1bb3c1c5457ec6d3fe7a 100644
--- a/lib/private/AppFramework/Routing/RouteConfig.php
+++ b/lib/private/AppFramework/Routing/RouteConfig.php
@@ -36,14 +36,25 @@ use OCP\Route\IRouter;
  * @package OC\AppFramework\routing
  */
 class RouteConfig {
+	/** @var DIContainer */
 	private $container;
+
+	/** @var IRouter */
 	private $router;
+
+	/** @var array */
 	private $routes;
+
+	/** @var string */
 	private $appName;
 
+	/** @var string[] */
+	private $controllerNameCache = [];
+
 	/**
 	 * @param \OC\AppFramework\DependencyInjection\DIContainer $container
 	 * @param \OCP\Route\IRouter $router
+	 * @param array $routes
 	 * @internal param $appName
 	 */
 	public function __construct(DIContainer $container, IRouter $router, $routes) {
@@ -234,7 +245,10 @@ class RouteConfig {
 	 */
 	private function buildControllerName($controller)
 	{
-		return $this->underScoreToCamelCase(ucfirst($controller)) . 'Controller';
+		if (!isset($this->controllerNameCache[$controller])) {
+			$this->controllerNameCache[$controller] = $this->underScoreToCamelCase(ucfirst($controller)) . 'Controller';
+		}
+		return $this->controllerNameCache[$controller];
 	}
 
 	/**