Electron製のアプリの起動を速くするelectron-linkの話

最近、社内でLT(https://labs.gree.jp/blog/2018/10/17291/)があって、そこで話をしたので、その時の内容を書く。
これは、その一部の話。

経緯とか

どうにかして、アプリを速くできないかなー、って情報探してたら
Atomというエディタの起動時間を高速化した時の情報が載ってていたのであった。

http://blog.atom.io/2017/04/18/improving-startup-time.html

Atomは他にもいろいろやって、最終的に50%速くなった、と。

electron-link

https://github.com/atom/electron-link

  • Atomのビルドツール。ライブラリを遅延ロードするコードに変換する。(試してない)
  • でも、使わなくても良いはず。変換結果は分かっているので、手動で書き換えられますね。
    • (実際に使って試してないから、実は変換方式が違っていたらどうしよう。)

書き換え

var log = require('electron-log');

log.error('error found.');

これ(↑)をこんな感じ(↓)書き換えるのじゃ。

var _log, log = () => { _log = _log || require('electron-log'); return _log; };
 
log().error('error found.');

書き換えの成果

  • 手動での書き換えは、書き換え箇所が多くて、それなりに面倒だった。
  • 自分の管理するコードはずぼら実装だったので、20%ぐらい起動速度が速くなった。
    • (BrowserWindowが立ち上がってから、表示されるまでの時間の範囲)
    • (大半はレンダリング時間)

使っているAltJSやフレームワークに遅延ローディングの仕組みがあったら、
そっち使ってもイイヨネ。