From b20d698ebd630a5d8030c42d3b88f6ef54224e36 Mon Sep 17 00:00:00 2001
From: Lukas Reschke <lukas@owncloud.com>
Date: Thu, 27 Nov 2014 00:01:55 +0100
Subject: [PATCH] Cache results of available languages
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This function is about 8 times calles for every single page call, when caching this variable I was able to gain a small performance improvement from 20,512 µs to 630 µs profiled with xhprof

Surely, this is no gigantic gain but if we would do that for every function out there...
---
 lib/private/l10n.php | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/private/l10n.php b/lib/private/l10n.php
index afa066c30e..bc4e53e975 100644
--- a/lib/private/l10n.php
+++ b/lib/private/l10n.php
@@ -20,6 +20,7 @@ class OC_L10N implements \OCP\IL10N {
 	 * cache
 	 */
 	protected static $cache = array();
+	protected static $availableLanguages = array();
 
 	/**
 	 * The best language
@@ -468,6 +469,9 @@ class OC_L10N implements \OCP\IL10N {
 	 * @return array an array of available languages
 	 */
 	public static function findAvailableLanguages($app=null) {
+		if(!empty(self::$availableLanguages)) {
+			return self::$availableLanguages;
+		}
 		$available=array('en');//english is always available
 		$dir = self::findI18nDir($app);
 		if(is_dir($dir)) {
@@ -479,6 +483,8 @@ class OC_L10N implements \OCP\IL10N {
 				}
 			}
 		}
+
+		self::$availableLanguages = $available;
 		return $available;
 	}
 
-- 
GitLab