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.)
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:
Comentários muito úteis
Em 0.19.3 em npm agora