From 6af980c20c99e31629f283dae39161ece8a415fc Mon Sep 17 00:00:00 2001
From: Bart Visscher <bartv@thisnet.nl>
Date: Fri, 8 Jun 2012 20:47:11 +0200
Subject: [PATCH] Add cache for getStorage and getInternalPath functions.

These are called for almost every file operation.
---
 lib/filesystemview.php | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/filesystemview.php b/lib/filesystemview.php
index c8df59cf82..8aa7b49f41 100644
--- a/lib/filesystemview.php
+++ b/lib/filesystemview.php
@@ -40,6 +40,8 @@
 
 class OC_FilesystemView {
 	private $fakeRoot='';
+	private $internal_path_cache=array();
+	private $storage_cache=array();
 
 	public function __construct($root){
 		$this->fakeRoot=$root;
@@ -84,7 +86,10 @@ class OC_FilesystemView {
 	* @return bool
 	*/
 	public function getInternalPath($path){
-		return OC_Filesystem::getInternalPath($this->getAbsolutePath($path));
+		if (!isset($this->internal_path_cache[$path])) {
+			$this->internal_path_cache[$path] = OC_Filesystem::getInternalPath($this->getAbsolutePath($path));
+		}
+		return $this->internal_path_cache[$path];
 	}
 	/**
 	* get the storage object for a path
@@ -92,7 +97,10 @@ class OC_FilesystemView {
 	* @return OC_Filestorage
 	*/
 	public function getStorage($path){
-		return OC_Filesystem::getStorage($this->getAbsolutePath($path));
+		if (!isset($this->storage_cache[$path])) {
+			$this->storage_cache[$path] = OC_Filesystem::getStorage($this->getAbsolutePath($path));
+		}
+		return $this->storage_cache[$path];
 	}
 
 	/**
-- 
GitLab