Comparação de tempo do Yarn vs NPM

Daniel Röhers Moura
3 min readOct 15, 2017

--

Nesse post não irei realizar comparação de Yarn vs NPM de forma de ver qual o melhor, explicar o conceito de ambas e etc.

Isso você pode encontrar facilmente em uma busca no Google, mas se não deseja realizar uma consulta, no final do post estarei adicionando alguns links que podem ser interessantes.

Bueno… Dito isso, irei ao que eu quero realmente mostrar, que é uma breve comparação de tempo da instalação de todos os módulos de um projeto que participo, no caso são um total de 23 dependências (que geram um total de 629 dependências junto com as dependências das dependências), seriam elas:

browser-sync: ^2.0.0-rc3
chai: ^2.1.2
esformatter-quotes: ^1.0.0
gulp: ^3.8.11
gulp-changed: ^1.2.1
gulp-compass: ^2.0.3
gulp-concat: ^2.5.2
gulp-esformatter: ^2.0.0
gulp-filesize: 0.0.6
gulp-imagemin: ^2.1.0
gulp-istanbul: ^0.6.0
gulp-load-plugins: *
gulp-minify-css: ^1.0.0
gulp-mocha: ^2.0.0
gulp-scss-lint: ^0.1.10
gulp-sftp: ^0.1.4
gulp-sourcemaps: ^1.5.0
gulp-uglify: ~0.1.0
gulp-util: ~2.2.9
require-dir: ^0.1.0
run-sequence: ^1.0.2
should: ^5.2.0
sinon: ^1.14.1

Para essa comparação as separei de algumas formas:

  • sem node_modules e package-lock.json
  • sem node_modules e yarn.lock
  • sem node_modules e com package-lock.json
  • sem node_modules e com yarn.lock
  • com node_modules e sem package-lock.json
  • com node_modules e sem yarn.lock
  • com node_modules e package-lock.json
  • com node_modules e yarn.lock

As versões utilizadas foram:

  • Node: 8.6.0
  • NPM: 5.5.1
  • Yarn: 1.2.1

Chega de lero lero e vamos para a comparação :)

Sem node_modules e arquivos lock

$ time npm installnpm install 27,11s user 8,18s system 79% cpu 44,127 total
$ time yarn
yarn 10,45s user 6,31s system 33% cpu 49,833 total

Sem node_modules e com arquivos lock

$ time npm installnpm install 19,19s user 6,29s system 130% cpu 19,550 total
$ time yarn
yarn 16,14s user 8,19s system 107% cpu 22,681 total

Com node_modules e sem arquivos lock

$ time npm installnpm install 19,88s user 3,14s system 121% cpu 18,924 total
$ time yarn
yarn 8,25s user 1,48s system 42% cpu 23,149 total

Com node_modules e arquivos lock

$ time npm installnpm install 8,69s user 0,81s system 114% cpu 8,266 total
$ time yarn
yarn 1,02s user 0,08s system 118% cpu 0,931 total

Sei que existem algumas coisas que poderíamos levar em consideração, como a situação da internet em cada caso e algumas melhorias na instalação do NPM, remover a barra de progresso, desativar logs e etc…

Mas quis utilizar ambos os casos da forma mais crua possível e sem personalizações, sendo assim, podemos notar que o Yarn esta sempre com uma performance muito à frente do NPM.

Espero que essa comparação faça você pensar qual ferramenta de build seria mais interessante para você e seus projetos. Com certeza com o tempo ambas irão melhorar muito suas formas de trabalharem com dependências e espero que outras ferramentas surjam, para assim, criarmos uma "concorrência" saudável e estarmos sempre evoluindo :)

Segue aqueles links interessantes:

--

--

Daniel Röhers Moura

Senior Software Developer | Simple is better | JavaScript lover