]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use isset() instead of strlen()
authorLukas Reschke <lukas@owncloud.com>
Sat, 10 Jan 2015 10:50:07 +0000 (11:50 +0100)
committerLukas Reschke <lukas@owncloud.com>
Sat, 10 Jan 2015 11:06:51 +0000 (12:06 +0100)
Isset is a native language construct and thus A LOT faster than using strlen()

On my local machine this leads to a 1s performance gain for about 1 million paths. Considering that this function will be called a lot for every file operation this makes a noticable difference.

lib/private/files/view.php

index f1c15e197d96bcd0d4cbbc00b5efbd5e54a50a23..034c49a905918fc13f37ed014892b6b8f00e7f5a 100644 (file)
@@ -1278,8 +1278,10 @@ class View {
 
        private function assertPathLength($path) {
                $maxLen = min(PHP_MAXPATHLEN, 4000);
-               $pathLen = strlen($path);
-               if ($pathLen > $maxLen) {
+               // Check for the string length - performed using isset() instead of strlen()
+               // because isset() is about 5x-40x faster.
+               if(isset($path[$maxLen])) {
+                       $pathLen = strlen($path);
                        throw new \OCP\Files\InvalidPathException("Path length($pathLen) exceeds max path length($maxLen): $path");
                }
        }