Rollup-plugin-typescript2: O cache torna o empacotamento mais lento em vez de mais rápido nas versões recentes (começando com 0.19.0)?

Criado em 15 fev. 2019  ·  6Comentários  ·  Fonte: ezolenko/rollup-plugin-typescript2

Parece que o cache de construção deste plugin torna o desempenho pior em vez de melhorá-lo, a partir da versão do pacote 0.19.0.

Percebi isso ao atualizar os scripts de construção em minha empresa para usar as versões de pacote mais recentes de tudo; incluindo uma atualização de ezolenko/rollup-plugin-typescript2 da versão 0.12.x para 0.19.2. Isso aumentou os tempos de empacotamento em um fator de aprox. 2x (de aproximadamente 3 segundos a 6-8 segundos por pacote).

Pensei em compartilhar minhas breves investigações com você. Eu configurei um pequeno benchmark (veja stakx/rollup-plugin-typescript2-benchmark ) para demonstrar isso. Admito que não é um benchmark superpreciso, mas acho que ainda mostra que definir a opção clean como false parece afetar negativamente o tempo de empacotamento (em vez de melhorá-lo, como seria de esperar de um cache pronto para uso).

Vou reproduzir as medidas que tirei abaixo; consulte o repositório vinculado para o código de benchmark real.

Versão do pacote | correr | clean: true [ms] | clean: false [ms] | clean: false & div; clean: true [%]
: -: |: -: | -: | -: | -:
0,15,0 | 1 836 | 670
| | 2 | 840 | 638
| | 3 | 884 | 574
| | média | 853 627 74%
0,16,0 | 1 841 576
| | 2 | 816 | 607
| | 3 | 834 581
| | média | 830 | 588 71%
0,17,0 | 1 861 | 582
| | 2 | 839 | 603
| | 3 | 835 | 594
| | média | 845 | 593 70%
0,18,0 | 1 1147 | 998
| | 2 | 1192 882
| | 3 | 1207 882
| | média | 1182 921 | 78%
0,18,1 | 1 815 | 617
| | 2 | 837 | 590
| | 3 | 823 | 590
| | média | 825 | 599 73%
0,19,0 | 1 828 | 896
| | 2 | 803 | 897
| | 3 | 836 | 901
| | média | 822 | 898 | 109%
0.19.1 | 1 850 | 913
| | 2 | 825 | 888
| | 3 | 799 881
| | média | 825 | 894 | 108%
0,19,2 | 1 1020 * | 888
| | 2 | 816 | 902
| | 3 | 826 890
| | média | 887 | 893 | 101%

Observe como ter um cache preenchido ( clean: false ) levou a tempos de empacotamento mais rápidos (aproximadamente 70% de clean: false ) até 0.18.1. A partir de 0.19.0, clean: false aumentaria o tempo de empacotamento em aprox. 10%. (Observe também o valor atípico marcado com *, que faz com que o 0.19.2 pareça ter um desempenho melhor do que realmente tem.)

Esta lentidão do cache é uma pena, especialmente porque clean: false é atualmente o padrão .

(PS: Eu gostaria de deixar claro que não estou dizendo que clean: false será por si só suficiente para piorar o desempenho deste plugin. Eu simplesmente percebi isso e achei curioso, pode valer a pena olhar mais de perto.)

bug

Comentários muito úteis

Em 0.19.3 em npm agora

Todos 6 comentários

Obrigado, vou olhar para ele na próxima semana, com sorte. Em geral, espero que clean: true seja um pouco mais rápido do que a primeira execução com cache e significativamente mais lento do que a segunda execução com cache. Parece que você está comparando as primeiras execuções no sistema limpo?

Outra variável a ser controlada é o texto digitado e a versão cumulativa.

Houve uma correção, esqueci em qual versão, que removeu a criação do cache inteiramente quando clean: true foi usado, então menos trabalho estava sendo feito durante a compilação.

A propósito, isso provavelmente significa construir máquinas que fazem uma verificação limpa (o que toda configuração sã de implantação não CI deveria estar fazendo) pode ser um pouco mais rápida desativando o cache.

Parece que você está comparando as primeiras execuções no sistema limpo?

Meu benchmark executa duas execuções:

  • O primeiro é executado depois que o cache foi limpo manualmente usando rimraf . Essa execução não é medida, ela está lá apenas para construir um novo cache.

  • A segunda execução (que poderia tirar proveito de um novo cache se clean: false ) é aquela que é medida.

Ok, entendo. Parece que o cache 19.2 está sempre ausente por algum motivo.

Ok corrigido no mestre. Ainda tenho que verificar como a correção afeta o modo de relógio.

Em 0.19.3 em npm agora

Impressionante! Obrigado por cuidar disso tão prontamente. Ótimo ver um projeto sendo mantido tão bem. : +1:

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

vwxyutarooo picture vwxyutarooo  ·  15Comentários

birtles picture birtles  ·  4Comentários

alshdavid picture alshdavid  ·  16Comentários

alexsasharegan picture alexsasharegan  ·  14Comentários

eddow picture eddow  ·  14Comentários