Rollup-plugin-typescript2: Cache membuat bundling lebih lambat daripada lebih cepat di versi terbaru (dimulai dengan 0.19.0)?

Dibuat pada 15 Feb 2019  ·  6Komentar  ·  Sumber: ezolenko/rollup-plugin-typescript2

Nampaknya build cache dari plugin ini malah memperburuk performa daripada meningkatkannya, dimulai dengan versi paket 0.19.0.

Saya perhatikan ini ketika memutakhirkan skrip build di perusahaan saya untuk menggunakan versi paket terbaru dari semuanya; termasuk pembaruan ezolenko/rollup-plugin-typescript2 dari versi 0.12.x ke 0.19.2. Ini meningkatkan waktu bundling dengan faktor sekitar. 2x (dari sekitar 3 detik hingga 6-8 detik per bundling).

Saya pikir saya akan berbagi penyelidikan singkat saya dengan Anda. Saya membuat benchmark kecil (lihat stakx/rollup-plugin-typescript2-benchmark ) untuk mendemonstrasikan ini. Memang ini bukan tolok ukur yang sangat akurat, tetapi saya pikir itu masih menunjukkan bahwa menyetel opsi clean ke false tampaknya memengaruhi waktu bundling secara negatif (alih-alih meningkatkannya, seperti yang diharapkan dari memiliki cache siap digunakan).

Saya akan mereproduksi pengukuran yang saya lakukan di bawah ini; lihat repo tertaut untuk kode benchmark aktual.

Versi paket | lari | clean: true [md] | clean: false [md] | clean: false ÷ clean: true [%]
:-:|:-:|--:|--:|--:
0.15.0 | 1 | 836 | 670 |
| | 2 | 840 | 638 |
| | 3 | 884 | 574 |
| | rata-rata | 853 | 627 | 74%
0.16.0 | 1 | 841 | 576 |
| | 2 | 816 | 607 |
| | 3 | 834 | 581 |
| | rata-rata | 830 | 588 | 71%
0.17.0 | 1 | 861 | 582
| | 2 | 839 | 603
| | 3 | 835 | 594
| | rata-rata | 845 | 593 | 70%
0.18.0 | 1 | 1147 | 998
| | 2 | 1192 | 882
| | 3 | 1207 | 882
| | rata-rata | 1182 | 921 | 78%
0.18.1 | 1 | 815 | 617
| | 2 | 837 | 590
| | 3 | 823 | 590
| | rata-rata | 825 | 599 | 73%
0.19.0 | 1 | 828 | 896
| | 2 | 803 | 897
| | 3 | 836 | 901
| | rata-rata | 822 | 898 | 109%
0.19.1 | 1 | 850 | 913
| | 2 | 825 | 888
| | 3 | 799 | 881
| | rata-rata | 825 | 894 | 108%
0.19.2 | 1 | 1020* | 888
| | 2 | 816 | 902
| | 3 | 826 | 890
| | rata-rata | 887 | 893 | 101%

Perhatikan bagaimana cache yang terisi ( clean: false ) menghasilkan waktu bundling yang lebih cepat (sekitar 70 % dari clean: false ) hingga 0,18.1. Dimulai dengan 0.19.0, clean: false sebenarnya akan meningkatkan waktu bundling sekitar. 10%. (Perhatikan juga outlier yang ditandai dengan *, yang membuat 0.19.2 tampil lebih baik daripada yang sebenarnya.)

Perlambatan cache ini sangat disayangkan terutama karena clean: false saat ini adalah default .

(PS: Saya ingin menjelaskan bahwa saya tidak mengatakan clean: false dengan sendirinya akan cukup untuk memperburuk kinerja plugin ini. Saya hanya memperhatikan ini dan merasa penasaran, mungkin perlu melihat lebih jauh rapat.)

bug

Komentar yang paling membantu

Di 0.19.3 di npm sekarang

Semua 6 komentar

Terima kasih, saya akan melihatnya minggu depan mudah-mudahan. Secara umum saya berharap clean: true menjadi sedikit lebih cepat daripada menjalankan pertama dengan cache, dan secara signifikan lebih lambat daripada menjalankan kedua dengan cache. Sepertinya Anda membandingkan berjalan pertama pada sistem yang bersih?

Variabel lain untuk dikontrol adalah TypeScript dan versi rollup.

Ada perbaikan, lupa di versi mana, yang menghapus pembuatan cache sepenuhnya saat clean: true digunakan, jadi lebih sedikit pekerjaan yang dilakukan selama pembuatan.

Btw, itu mungkin berarti membangun mesin yang melakukan checkout bersih (yang harus dilakukan oleh setiap konfigurasi penyebaran non CI yang waras) mungkin melihat sedikit kecepatan dengan menonaktifkan cache.

Sepertinya Anda membandingkan berjalan pertama pada sistem yang bersih?

Patokan saya melakukan dua proses:

  • Yang pertama berjalan setelah cache dihapus secara manual menggunakan rimraf . Proses ini tidak diukur, hanya ada untuk membangun cache baru.

  • Proses kedua (yang dapat memanfaatkan cache baru jika clean: false ) adalah yang diukur.

Oke, saya melihatnya. Sepertinya di 19.2 cache selalu terlewatkan karena suatu alasan.

Ok diperbaiki di master. Saya masih harus memeriksa bagaimana perbaikannya memengaruhi mode tontonan.

Di 0.19.3 di npm sekarang

Luar biasa! Terima kasih untuk mengurus ini begitu cepat. Senang melihat proyek dipelihara dengan sangat baik. :+1:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat