Rollup-plugin-typescript2: Le cache rend le regroupement plus lent au lieu d'être plus rapide dans les versions récentes (à partir de 0.19.0) ?

Créé le 15 févr. 2019  ·  6Commentaires  ·  Source: ezolenko/rollup-plugin-typescript2

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.)

bug

Commentaire le plus utile

En 0.19.3 sur npm maintenant

Tous les 6 commentaires

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:

Cette page vous a été utile?
0 / 5 - 0 notes