add charts #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Package Manager Benchmarks | |
on: | |
push: | |
workflow_dispatch: | |
jobs: | |
benchmark: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Install Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '22' | |
- name: Install npm | |
run: npm install -g npm | |
- name: Install yarn | |
run: npm install -g yarn | |
- name: Install pnpm | |
run: npm install -g pnpm | |
- name: Install bun | |
run: curl -fsSL https://bun.sh/install | bash | |
- name: Install deno | |
run: curl -fsSL https://deno.land/x/install/install.sh | sh | |
- name: Install chart-cli | |
run: npm install -g chart-cli | |
- name: Benchmark npm (cold cache) | |
id: npm_cold | |
run: | | |
rm -rf node_modules package-lock.json | |
echo "npm_cold=$(TIMEFORMAT=%R; { time npm install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark npm (warm cache) | |
id: npm_warm | |
run: echo "npm_warm=$(TIMEFORMAT=%R; { time npm install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark yarn (cold cache) | |
id: yarn_cold | |
run: | | |
rm -rf node_modules yarn.lock | |
echo "yarn_cold=$(TIMEFORMAT=%R; { time yarn install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark yarn (warm cache) | |
id: yarn_warm | |
run: echo "yarn_warm=$(TIMEFORMAT=%R; { time yarn install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark pnpm (cold cache) | |
id: pnpm_cold | |
run: | | |
rm -rf node_modules pnpm-lock.yaml | |
echo "pnpm_cold=$(TIMEFORMAT=%R; { time pnpm install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark pnpm (warm cache) | |
id: pnpm_warm | |
run: echo "pnpm_warm=$(TIMEFORMAT=%R; { time pnpm install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark bun (cold cache) | |
id: bun_cold | |
run: | | |
rm -rf node_modules bun.lockb | |
echo "bun_cold=$(TIMEFORMAT=%R; { time bun install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark bun (warm cache) | |
id: bun_warm | |
run: echo "bun_warm=$(TIMEFORMAT=%R; { time bun install; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark deno (cold cache) | |
id: deno_cold | |
run: | | |
rm -rf deno_modules | |
echo "deno_cold=$(TIMEFORMAT=%R; { time deno cache; } 2>&1)" >> $GITHUB_ENV | |
- name: Benchmark deno (warm cache) | |
id: deno_warm | |
run: echo "deno_warm=$(TIMEFORMAT=%R; { time deno cache; } 2>&1)" >> $GITHUB_ENV | |
- name: Generate SVG Chart | |
run: | | |
npm_cold=${{ env.npm_cold }} | |
npm_warm=${{ env.npm_warm }} | |
yarn_cold=${{ env.yarn_cold }} | |
yarn_warm=${{ env.yarn_warm }} | |
pnpm_cold=${{ env.pnpm_cold }} | |
pnpm_warm=${{ env.pnpm_warm }} | |
bun_cold=${{ env.bun_cold }} | |
bun_warm=${{ env.bun_warm }} | |
deno_cold=${{ env.deno_cold }} | |
deno_warm=${{ env.deno_warm }} | |
echo "npm (cold),$npm_cold" > benchmark.csv | |
echo "npm (warm),$npm_warm" >> benchmark.csv | |
echo "yarn (cold),$yarn_cold" >> benchmark.csv | |
echo "yarn (warm),$yarn_warm" >> benchmark.csv | |
echo "pnpm (cold),$pnpm_cold" >> benchmark.csv | |
echo "pnpm (warm),$pnpm_warm" >> benchmark.csv | |
echo "bun (cold),$bun_cold" >> benchmark.csv | |
echo "bun (warm),$bun_warm" >> benchmark.csv | |
echo "deno (cold),$deno_cold" >> benchmark.csv | |
echo "deno (warm),$deno_warm" >> benchmark.csv | |
chart bar benchmark.csv --title "Package Manager Benchmark" --output benchmark.svg | |
- name: Upload SVG Chart | |
uses: actions/upload-artifact@v2 | |
with: | |
name: benchmark-chart | |
path: benchmark.svg |