From 46d8533feeed6ac760acdabacecb73a906e4e136 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Fri, 24 Aug 2018 23:48:20 +0200 Subject: [PATCH] startup time speedup --- app/lru.js | 15 +++++++++++++++ app/main.js | 1 + app/src/entry.preload.ts | 1 + app/webpack.config.js | 1 + 4 files changed, 18 insertions(+) create mode 100644 app/lru.js diff --git a/app/lru.js b/app/lru.js new file mode 100644 index 00000000..a6bbd4e5 --- /dev/null +++ b/app/lru.js @@ -0,0 +1,15 @@ +var lru = require('lru-cache')({max: 256, maxAge: 250/*ms*/}); + +var fs = require('fs'); +var origLstat = fs.realpathSync.bind(fs); +console.log('s') +// NB: The biggest offender of thrashing realpathSync is the node module system +// itself, which we can't get into via any sane means. +require('fs').realpathSync = function(p) { + let r = lru.get(p); + if (r) return r; + + r = origLstat(p); + lru.set(p, r); + return r; +}; diff --git a/app/main.js b/app/main.js index 8ab2233d..d870d714 100644 --- a/app/main.js +++ b/app/main.js @@ -1,3 +1,4 @@ +require('./lru.js') if (process.platform == 'win32' && require('electron-squirrel-startup')) process.exit(0) const electron = require('electron') diff --git a/app/src/entry.preload.ts b/app/src/entry.preload.ts index b4582a4d..4c847648 100644 --- a/app/src/entry.preload.ts +++ b/app/src/entry.preload.ts @@ -1,3 +1,4 @@ +import '../lru.js' import 'source-sans-pro' import 'font-awesome/css/font-awesome.css' import 'ngx-toastr/toastr.css' diff --git a/app/webpack.config.js b/app/webpack.config.js index f4b5ba04..610ad172 100644 --- a/app/webpack.config.js +++ b/app/webpack.config.js @@ -64,6 +64,7 @@ module.exports = { 'child_process': 'commonjs child_process', 'electron': 'commonjs electron', 'electron-is-dev': 'commonjs electron-is-dev', + 'fs': 'commonjs fs', 'ngx-toastr': 'commonjs ngx-toastr', 'module': 'commonjs module', 'mz': 'commonjs mz',