Rollup-plugin-typescript2: Кеш делает объединение медленнее, а не быстрее в последних версиях (начиная с 0.19.0)?

Созданный на 15 февр. 2019  ·  6Комментарии  ·  Источник: ezolenko/rollup-plugin-typescript2

Похоже, что кеш сборки этого плагина ухудшает производительность, а не улучшает ее, начиная с версии пакета 0.19.0.

Я заметил это при обновлении сценариев сборки в моей компании, чтобы использовать все последние версии пакетов; включая обновление ezolenko/rollup-plugin-typescript2 с версии 0.12.x до 0.19.2. Это увеличило время компоновки примерно в 2 раза. 2x (примерно от 3 секунд до 6-8 секунд на объединение).

Я подумал, что поделюсь с вами своими краткими исследованиями. Я установил небольшой тест (см. stakx/rollup-plugin-typescript2-benchmark ), чтобы продемонстрировать это. По общему признанию, это не очень точный тест, но я думаю, что он все же показывает, что установка для параметра clean false видимому, отрицательно влияет на время сборки (вместо того, чтобы улучшать его, как можно было бы ожидать от кеш готов к использованию).

Я воспроизведу измерения, которые я сделал ниже; см. связанный репо для фактического кода теста.

Версия пакета | запустить | clean: true [мс] | clean: false [мс] | clean: false & div; 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 ) привело к сокращению времени объединения (примерно 70% от clean: false ) до 0.18.1. Начиная с версии 0.19.0, clean: false фактически увеличит время компоновки примерно на. 10%. (Обратите внимание на выброс, отмеченный звездочкой *, из-за чего 0.19.2 выглядит лучше, чем на самом деле.)

Это замедление кеширования весьма прискорбно, тем более что clean: false в настоящее время является значением по умолчанию .

(PS: я хотел бы прояснить, что я не говорю, что clean: false само по себе будет достаточно, чтобы ухудшить производительность этого плагина. Я просто заметил это и нашел это любопытным, возможно, стоит изучить больше близко.)

Самый полезный комментарий

Сейчас в версии 0.19.3 в npm

Все 6 Комментарий

Спасибо, надеюсь, посмотрю на следующей неделе. В общем, я ожидаю, что clean: true будет немного быстрее, чем первый запуск с кешем, и значительно медленнее, чем второй запуск с кешем. Похоже, вы сравниваете первые запуски на чистой системе?

Еще одна контролируемая переменная - машинописный текст и сводная версия.

Было исправление (забыл в какой версии), которое полностью удаляло создание кеша при использовании clean: true , поэтому во время сборки выполнялось меньше работы.

Кстати, это, вероятно, означает, что машины сборки, которые выполняют чистую проверку (которую должна делать каждая разумная конфигурация развертывания без CI), могут немного ускориться за счет отключения кеша.

Похоже, вы сравниваете первые запуски на чистой системе?

Мой тест выполняет два прогона:

  • Первый запускается после того, как кеш был очищен вручную с помощью rimraf . Этот прогон не измеряется, он нужен только для создания нового кеша.

  • Второй прогон (который может использовать свежий кеш, если clean: false ) - это тот, который измеряется.

Хорошо, я это вижу. Похоже, в 19.2 всегда почему-то не хватает кеша.

Хорошо, исправлено в мастере. Однако мне все еще нужно проверить, как это исправление влияет на режим часов.

Сейчас в версии 0.19.3 в npm

Потрясающий! Спасибо, что так быстро об этом позаботились. Приятно видеть, что проект так хорошо поддерживается. : +1:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги