Il semble que le cache de construction de ce plugin aggrave les performances au lieu de les améliorer, à partir de la version 0.19.0 du package.
J'ai remarqué cela lors de la mise à niveau des scripts de construction dans mon entreprise pour utiliser les dernières versions de package de tout ; incluant une mise à jour de ezolenko/rollup-plugin-typescript2
de la version 0.12.x à 0.19.2. Cela a augmenté les temps de regroupement d'un facteur d'env. 2x (d'environ 3 s à 6-8 s par paquet).
J'ai pensé partager mes brèves enquêtes avec vous. J'ai mis en place un petit benchmark (voir stakx/rollup-plugin-typescript2-benchmark
) pour le démontrer. Certes, ce n'est pas une référence super précise, mais je pense que cela montre toujours que le réglage de l'option clean
sur false
semble affecter négativement le temps de regroupement (au lieu de l'améliorer, comme on pourrait s'y attendre d'avoir un cache prêt à l'emploi).
Je vais reproduire les mesures que j'ai prises ci-dessous; voir le référentiel lié pour le code de référence réel.
Version du paquet | courir | clean: true
[ms] | clean: false
[ms] | clean: false
÷ clean: true
[%]
:-:|:-:|--:|--:|--:
0,15,0 | 1 | 836 | 670 |
| | 2 | 840 | 638 |
| | 3 | 884 | 574 |
| | moy. | 853 | 627 | 74 %
0,16.0 | 1 | 841 | 576 |
| | 2 | 816 | 607 |
| | 3 | 834 | 581 |
| | moy. | 830 | 588 | 71 %
0,17.0 | 1 | 861 | 582
| | 2 | 839 | 603
| | 3 | 835 | 594
| | moy. | 845 | 593 | 70 %
0,18.0 | 1 | 1147 | 998
| | 2 | 1192 | 882
| | 3 | 1207 | 882
| | moy. | 1182 | 921 | 78 %
0.18.1 | 1 | 815 | 617
| | 2 | 837 | 590
| | 3 | 823 | 590
| | moy. | 825 | 599 | 73 %
0,19.0 | 1 | 828 | 896
| | 2 | 803 | 897
| | 3 | 836 | 901
| | moy. | 822 | 898 | 109%
0,19.1 | 1 | 850 | 913
| | 2 | 825 | 888
| | 3 | 799 | 881
| | moy. | 825 | 894 | 108 %
0,19.2 | 1 | 1020* | 888
| | 2 | 816 | 902
| | 3 | 826 | 890
| | moy. | 887 | 893 | 101 %
Notez comment le fait d'avoir un cache rempli ( clean: false
) a conduit à des temps de regroupement plus rapides (environ 70 % de clean: false
) jusqu'à 0.18.1. À partir de 0,19.0, clean: false
augmenterait en fait les temps de regroupement d'environ. dix %. (Notez également la valeur aberrante marquée d'un *, ce qui fait que 0,19.2 semble mieux fonctionner qu'il ne le fait réellement.)
Ce ralentissement du cache est assez dommage d'autant plus que clean: false
est actuellement la valeur par défaut .
(PS : je tiens à préciser que je ne dis pas que clean: false
sera en soi suffisant pour aggraver les performances de ce plugin. J'ai simplement remarqué cela et j'ai trouvé cela curieux, cela pourrait valoir la peine d'en savoir plus étroitement.)
Merci, je vais regarder ça la semaine prochaine j'espère. En général, je m'attends clean: true
ce que
Une autre variable à contrôler est la version dactylographiée et la version cumulée.
Il y avait un correctif, oublié dans quelle version, qui supprimait entièrement la création de cache lorsque clean: true
était utilisé, donc moins de travail était fait pendant la construction.
Au fait, cela signifie probablement que la construction de machines qui effectuent une vérification propre (ce que toute configuration de déploiement non CI saine devrait faire) pourrait s'accélérer un peu en désactivant le cache.
On dirait que vous comparez les premières exécutions sur un système propre ?
Mon benchmark effectue deux runs :
Le premier s'exécute après que le cache a été effacé manuellement à l'aide de rimraf
. Cette course n'est pas mesurée, elle est juste là pour créer un nouveau cache.
La deuxième exécution (qui pourrait profiter d'un nouveau cache si clean: false
) est celle qui est mesurée.
D'accord, je le vois. On dirait que le cache 19.2 est toujours manqué pour une raison quelconque.
Ok corrigé dans le maître. Je dois encore vérifier comment le correctif affecte le mode montre.
En 0.19.3 sur npm maintenant
Génial! Merci de vous être occupé de cela si rapidement. C'est super de voir un projet si bien entretenu. :+1:
Commentaire le plus utile
En 0.19.3 sur npm maintenant