]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
[perf] Cache loadLocale misses to avoid FS ops
authordsemenov <dsemenov@ebay.com>
Mon, 30 Dec 2019 01:55:35 +0000 (17:55 -0800)
committerIskren Chernev <iskren.chernev@gmail.com>
Fri, 24 Apr 2020 17:46:17 +0000 (20:46 +0300)
src/lib/locale/locales.js

index e3e87d26dd0c88ff59cfe51d99fb599d03c48dac..86b933d66e8b97c5659b1681e5037f45ceb6c00a 100644 (file)
@@ -47,14 +47,18 @@ function chooseLocale(names) {
 function loadLocale(name) {
     var oldLocale = null;
     // TODO: Find a better way to register and load all the locales in Node
-    if (!locales[name] && (typeof module !== 'undefined') &&
+    if (locales[name] === undefined && (typeof module !== 'undefined') &&
             module && module.exports) {
         try {
             oldLocale = globalLocale._abbr;
             var aliasedRequire = require;
             aliasedRequire('./locale/' + name);
             getSetGlobalLocale(oldLocale);
-        } catch (e) {}
+        } catch (e) {
+            // mark as not found to avoid repeating expensive file require call causing high CPU
+            // when trying to find en-US, en_US, en-us for every format call
+            locales[name] = null; // null means not found
+        }
     }
     return locales[name];
 }