このプラグインのビルドキャッシュは、パッケージバージョン0.19.0以降、パフォーマンスを改善するのではなく悪化させるようです。
私の会社でビルドスクリプトをアップグレードして、すべての最新のパッケージバージョンを使用するときに、これに気づきました。 バージョン0.12.xから0.19.2へのezolenko/rollup-plugin-typescript2
更新を含みます。 これにより、バンドル時間が約1倍に増加しました。 2x(バンドルごとに約3秒から6-8秒)。
私の簡単な調査をあなたと共有したいと思いました。 これを実証するために、小さなベンチマーク( stakx/rollup-plugin-typescript2-benchmark
)を設定しました。 確かにそれは超正確なベンチマークではありませんが、 clean
オプションをfalse
すると、バンドル時間にマイナスの影響を与えるように見えることを示していると思います(すぐに使用できるキャッシュ)。
以下で行った測定値を再現します。 実際のベンチマークコードについては、リンクされたリポジトリを参照してください。
パッケージバージョン| 実行| clean: true
[ms] | clean: false
[ms] | clean: false
÷ clean: true
[%]
:-:|:-:|-:|-:|-:
0.15.0 | 1 | 836 | 670 |
| | 2 | 840 | 638 |
| | 3 | 884 | 574 |
| | 平均 | 853 | 627 | 74%
0.16.0 | 1 | 841 | 576 |
| | 2 | 816 | 607 |
| | 3 | 834 | 581 |
| | 平均 | 830 | 588 | 71%
0.17.0 | 1 | 861 | 582
| | 2 | 839 | 603
| | 3 | 835 | 594
| | 平均 | 845 | 593 | 70%
0.18.0 | 1 | 1147 | 998
| | 2 | 1192 | 882
| | 3 | 1207 | 882
| | 平均 | 1182 | 921 | 78%
0.18.1 | 1 | 815 | 617
| | 2 | 837 | 590
| | 3 | 823 | 590
| | 平均 | 825 | 599 | 73%
0.19.0 | 1 | 828 | 896
| | 2 | 803 | 897
| | 3 | 836 | 901
| | 平均 | 822 | 898 | 109%
0.19.1 | 1 | 850 | 913
| | 2 | 825 | 888
| | 3 | 799 | 881
| | 平均 | 825 | 894 | 108%
0.19.2 | 1 | 1020 * | 888
| | 2 | 816 | 902
| | 3 | 826 | 890
| | 平均 | 887 | 893 | 101%
キャッシュを設定すると( clean: false
)、0.18.1までのバンドル時間が短縮された( clean: false
約70%)ことに注意してください。 0.19.0から、 clean: false
は、実際にはバンドル時間を約1時間増やします。 10%。 (*でマークされた外れ値にも注意してください。これにより、0.19.2のパフォーマンスが実際よりも向上しているように見えます。)
clean: false
が現在デフォルトであるため、このキャッシュの速度低下は非常に残念
(追記: clean: false
だけでこのプラグインのパフォーマンスを悪化させるのに十分だと言っているのではないことを明確にしておきたいのですが、これに気づいただけで興味がありました。もっと調べる価値があるかもしれません。密接に。)
おかげで、私は来週いつかそれを見ることを願っています。 一般に、 clean: true
は、キャッシュを使用した最初の実行よりも少し速く、キャッシュを使用した2回目の実行よりも大幅に遅いと予想しています。 クリーンなシステムでの最初の実行を比較しているように見えますか?
制御するもう1つの変数は、typescriptとロールアップバージョンです。
clean: true
が使用されたときにキャッシュの作成を完全に削除する修正があり、どのバージョンであるかを忘れていたため、ビルド中に行われる作業が少なくなりました。
ところで、それはおそらく、クリーンチェックアウトを実行するビルドマシン(すべての正常な非CIデプロイメント構成が実行する必要がある)がキャッシュを無効にすることで少しスピードアップする可能性があることを意味します。
クリーンなシステムでの最初の実行を比較しているように見えますか?
私のベンチマークは2つの実行を実行します:
最初のものは、 rimraf
を使用してキャッシュが手動でワイプされた後に実行されます。 この実行は測定されません。新しいキャッシュを構築するためだけにあります。
2回目の実行( clean: false
場合は新しいキャッシュを利用できます)が測定されます。
はい、わかりました。 19.2では、何らかの理由でキャッシュが常に失われているように見えます。
マスターで修正しました。 ただし、修正がウォッチモードにどのように影響するかを確認する必要があります。
今npmの0.19.3で
素晴らしい! 早急に対応していただきありがとうございます。 プロジェクトが非常にうまく維持されているのを見るのは素晴らしいことです。 :+1:
最も参考になるコメント
今npmの0.19.3で