perf: use hyperfine-action for benchmark vs. external pools
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 22 Sep 2023 15:05:39 +0000 (17:05 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 22 Sep 2023 15:05:39 +0000 (17:05 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
.github/workflows/external-benchmark.yml
benchmarks/versus-external-pools/.hyperfine.json [new file with mode: 0644]

index 191be3277b876f12211a763a1293c7970cd359d5..bc64f89731d1519071bc0eb29541b6a7100f4b45 100644 (file)
@@ -27,23 +27,33 @@ jobs:
       - name: Install dependencies
         run: pnpm install --ignore-scripts
       - name: Run benchmark
-        if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}'
-        run: ./bench.sh
-      - name: Commit files
-        if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}'
-        env:
-          COMMIT_MESSAGE: 'docs: update benchmark versus external pools results'
-          COMMIT_AUTHOR: Benchmark Bot
-          COMMIT_EMAIL: benchmark-bot@users.noreply.github.com
-        run: |
-          git config --local user.name "${{ env.COMMIT_AUTHOR }}"
-          git config --local user.email "${{ env.COMMIT_EMAIL }}"
-          git pull
-          git add ./BENCH-100000.md ./BENCH-100000.json
-          git commit -a -m "${{ env.COMMIT_MESSAGE }}"
-      - name: Push changes
-        if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}'
-        uses: CasperWA/push-protected@v2
+        uses: blacha/hyperfine-action@v1
         with:
-          token: ${{ secrets.GH_TOKEN_PROTECTED }}
-          branch: ${{ github.event.repository.default_branch }}
+          benchmark-config: '.hyperfine.json'
+          count: 500
+          benchmark-branch: 'gh-pages'
+          benchmark-output: './benchmarks.json'
+          benchmark-html: './benchmarks.html'
+          master-branch: 'master'
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+      # - name: Run benchmark
+      #   if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}'
+      #   run: ./bench.sh
+      # - name: Commit files
+      #   if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}'
+      #   env:
+      #     COMMIT_MESSAGE: 'docs: update benchmark versus external pools results'
+      #     COMMIT_AUTHOR: Benchmark Bot
+      #     COMMIT_EMAIL: benchmark-bot@users.noreply.github.com
+      #   run: |
+      #     git config --local user.name "${{ env.COMMIT_AUTHOR }}"
+      #     git config --local user.email "${{ env.COMMIT_EMAIL }}"
+      #     git pull
+      #     git add ./BENCH-100000.md ./BENCH-100000.json
+      #     git commit -a -m "${{ env.COMMIT_MESSAGE }}"
+      # - name: Push changes
+      #   if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}'
+      #   uses: CasperWA/push-protected@v2
+      #   with:
+      #     token: ${{ secrets.GH_TOKEN_PROTECTED }}
+      #     branch: ${{ github.event.repository.default_branch }}
diff --git a/benchmarks/versus-external-pools/.hyperfine.json b/benchmarks/versus-external-pools/.hyperfine.json
new file mode 100644 (file)
index 0000000..4a4453e
--- /dev/null
@@ -0,0 +1,21 @@
+[
+  { "name": "Poolifier dynamic", "command": "node dynamic-poolifier.mjs" },
+  { "name": "Poolifier fixed", "command": "node fixed-poolifier.mjs" },
+  { "name": "Piscina dynamic", "command": "node dynamic-piscina.mjs" },
+  { "name": "Piscina fixed", "command": "node fixed-piscina.mjs" },
+  { "name": "Tinypool dynamic", "command": "node dynamic-tinypool.mjs" },
+  { "name": "Tinypool fixed", "command": "node fixed-tinypool.mjs" },
+  { "name": "Workerpool dynamic", "command": "node dynamic-workerpool.mjs" },
+  { "name": "Workerpool fixed", "command": "node fixed-workerpool.mjs" },
+  { "name": "Worker nodes dynamic", "command": "node dynamic-worker-nodes.js" },
+  { "name": "Worker nodes fixed", "command": "node fixed-worker-nodes.js" },
+  {
+    "name": "Node worker threads pool dynamic",
+    "command": "node dynamic-node-worker-threads-pool.mjs"
+  },
+  {
+    "name": "Node worker threads pool static",
+    "command": "node static-node-worker-threads-pool.mjs"
+  },
+  { "name": "Nanothreads fixed", "command": "node fixed-nanothreads.mjs" }
+]