diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php
index ed2be59c092e6ed8c046a959caf242a5af9485b8..bc43eb5d1ce75021096214fe3bfda0adf69c4541 100644
--- a/lib/private/files/filesystem.php
+++ b/lib/private/files/filesystem.php
@@ -47,6 +47,8 @@ class Filesystem {
 
 	static private $usersSetup = array();
 
+	static private $normalizedPathCache = array();
+
 	/**
 	 * classname which used for hooks handling
 	 * used as signalclass in OC_Hooks::emit()
@@ -713,6 +715,12 @@ class Filesystem {
 	 * @return string
 	 */
 	public static function normalizePath($path, $stripTrailingSlash = true, $isAbsolutePath = false) {
+		$cacheKey = $path.'-'.-$stripTrailingSlash.'-'.$isAbsolutePath;
+
+		if(isset(self::$normalizedPathCache[$cacheKey])) {
+			return self::$normalizedPathCache[$cacheKey];
+		}
+
 		if ($path == '') {
 			return '/';
 		}
@@ -756,7 +764,10 @@ class Filesystem {
 		//normalize unicode if possible
 		$path = \OC_Util::normalizeUnicode($path);
 
-		return $windows_drive_letter . $path;
+		$normalizedPath = $windows_drive_letter . $path;
+		self::$normalizedPathCache[$cacheKey] = $normalizedPath;
+
+		return $normalizedPath;
 	}
 
 	/**