LoginSignup
9
3

More than 5 years have passed since last update.

結局Yarnは速いのか2018秋

Last updated at Posted at 2018-10-06

Yarnはキャッシュするので速いという話をよく聞いていて、Yarnしか使ってなかったが、最近npmを使う機会があって気づいたのは、そこまで遅くないなということ。6.xになってから爆速になったという噂もそういえばあった。

*この記事は速さのみに絞っているので、npmはauditがあるだとか、yarnのupgrade-interactiveは至高だとか言う話は置いておきます。

計測環境

  • MacBook Pro (13-inch, 2018)
  • macOS High Sierra Version 10.13.6
  • Node.js v10.11.0
  • npm v6.4.1
  • Yarn v1.10.1
package.json
{
    "private": true,
    "dependencies": {
        "@types/bcrypt": "^3.0.0",
        "@types/joi": "^13.6.0",
        "@types/koa": "^2.0.46",
        "@types/koa-bodyparser": "^5.0.1",
        "@types/koa-router": "^7.0.32",
        "@types/react": "^16.4.15",
        "@types/react-dom": "^16.0.8",
        "bcrypt": "^3.0.1",
        "concurrently": "^4.0.1",
        "del-cli": "^1.1.0",
        "joi": "^13.7.0",
        "koa": "^2.5.3",
        "koa-bodyparser": "^4.2.1",
        "koa-router": "^7.4.0",
        "onchange": "^5.0.2",
        "parcel-bundler": "^1.10.1",
        "pg": "^7.5.0",
        "prettier": "^1.14.3",
        "react": "^16.5.2",
        "react-dom": "^16.5.2",
        "reflect-metadata": "^0.1.12",
        "ts-node": "^7.0.1",
        "tslint": "^5.11.0",
        "typeorm": "^0.2.7",
        "typescript": "^3.1.1"
    }
}
  • 計測は/usr/bin/timeを使用

lockファイルなしの場合

npm: 15.93 real 23.63 user 14.89 sys
Yarn: 15.55 real 8.09 user 12.14 sys

lockファイルありの場合

npm: 11.88 real 19.40 user 13.19 sys
npm ci: 8.00 real 2.47 user 0.40 sys
Yarn: 8.46 real 5.81 user 11.53 sys

考察

  • 新規インストールは大して変わらないが、lockファイルが存在するときの高速化はYarnが勝る。
  • そもそもnpmはlockファイルがあろうがなかろうが依存関係を解決するらしいので、Yarnが速いのは当たり前か。
  • ただし依存関係を解決しないciコマンドだと、Yarnと同じくらいでしかもユーザーCPU時間が半分以下。
  • 既存プロジェクトを引っ張ってきて最初のインストールはnpm ci、その後はnpm iを使ったら、Yarnとほぼ同じの速さ。

結論

Yarnは速くない。他の機能でどっちを使うか決めよう。

注意

ベンチマーク素人です。アドバイス頂けたらありがたいです。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3