From 04b2474681e024d641371a290b50973cf4456174 Mon Sep 17 00:00:00 2001 From: Koichi Nakamura Date: Mon, 11 Jan 2021 16:22:56 +0900 Subject: [PATCH] Add the first benchmark --- .github/workflows/benchmark.yaml | 18 ++++++++++++++++ benchmark/gendoc.sh | 35 ++++++++++++++++++++++++++++++++ benchmark/nop.fs | 0 3 files changed, 53 insertions(+) create mode 100644 .github/workflows/benchmark.yaml create mode 100755 benchmark/gendoc.sh create mode 100644 benchmark/nop.fs diff --git a/.github/workflows/benchmark.yaml b/.github/workflows/benchmark.yaml new file mode 100644 index 0000000..4e9f1a7 --- /dev/null +++ b/.github/workflows/benchmark.yaml @@ -0,0 +1,18 @@ +name: benchmark + +on: + push: +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: take benchmarks + run: | + ./benchmark/gendoc.sh + - name: upload to wiki + uses: SwiftDocOrg/github-wiki-publish-action@v1 + with: + path: "documentation" + env: + GH_PERSONAL_ACCESS_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} diff --git a/benchmark/gendoc.sh b/benchmark/gendoc.sh new file mode 100755 index 0000000..b19a2aa --- /dev/null +++ b/benchmark/gendoc.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +mkdir -p document + +FILE=document/benchmark.md +TARGETS="i386-linux-handwritten c python" +TIMEFORMAT='%U' +function benchmark () { + sum=0 + for i in `seq $2`; do + t=`{ eval $1; } 2>&1` + sum=`echo $t + $sum | bc` + done + average=`echo "scale=3; $sum / $2" | bc | xargs printf "%.3f"` + echo $average +} + +function bootstrap { + time ./planck < bootstrap.fs benchmark/nop.fs 2>&1 > /dev/null +} + +function generate-table { + echo "## $1" + echo + echo "| implementation | sec |" + echo "|:---------------|----:|" + for impl in $TARGETS; do + make $impl 2>&1 > /dev/null + t=`benchmark $2 $3` + echo "| $impl | $t |" + done +} + +echo "# Benchmarks" >> $FILE +generate-table "Bootstrap Time" bootstrap 5 diff --git a/benchmark/nop.fs b/benchmark/nop.fs new file mode 100644 index 0000000..e69de29