Skip already loaded apps in loadApps

Otherwise you might end up calling a lot of functions unneeded.
And while the individual calls are cheap if you multiply them by 20k
they still get somewhat expensive.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2020-11-06 14:26:42 +01:00 committed by backportbot[bot]
parent 93211e7ded
commit ef5cee12d1
1 changed files with 3 additions and 3 deletions

View File

@ -94,7 +94,7 @@ class OC_App {
* @return bool
*/
public static function isAppLoaded(string $app): bool {
return in_array($app, self::$loadedApps, true);
return isset(self::$loadedApps[$app]);
}
/**
@ -127,7 +127,7 @@ class OC_App {
// prevent app.php from printing output
ob_start();
foreach ($apps as $app) {
if (($types === [] or self::isType($app, $types)) && !in_array($app, self::$loadedApps)) {
if (!isset(self::$loadedApps[$app]) && ($types === [] || self::isType($app, $types))) {
self::loadApp($app);
}
}
@ -143,7 +143,7 @@ class OC_App {
* @throws Exception
*/
public static function loadApp(string $app) {
self::$loadedApps[] = $app;
self::$loadedApps[$app] = true;
$appPath = self::getAppPath($app);
if ($appPath === false) {
return;