From 2043d5fca47c1c876793bf6488ebe23886699bb9 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Sun, 6 Apr 2025 10:10:37 +0100 Subject: [PATCH] Benchmark. --- .github/workflows/libc.yml | 20 +++++++++++++++++++ .github/workflows/repro.sh | 21 +------------------- sqlite3/libc/benchmark.sh | 12 ++++++++++++ sqlite3/libc/build.sh | 4 +++- sqlite3/tools.sh | 39 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/libc.yml create mode 100755 sqlite3/libc/benchmark.sh create mode 100755 sqlite3/tools.sh diff --git a/.github/workflows/libc.yml b/.github/workflows/libc.yml new file mode 100644 index 0000000..3dbaba8 --- /dev/null +++ b/.github/workflows/libc.yml @@ -0,0 +1,20 @@ +name: Benchmark libc + +on: + workflow_dispatch: + +jobs: + test: + strategy: + matrix: + os: [ubuntu-latest, ubuntu-24.04-arm] + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: { go-version: stable } + + - name: Benchmark + shell: bash + run: sqlite3/libc/benchmark.sh \ No newline at end of file diff --git a/.github/workflows/repro.sh b/.github/workflows/repro.sh index 564245b..7583cfd 100755 --- a/.github/workflows/repro.sh +++ b/.github/workflows/repro.sh @@ -1,28 +1,9 @@ #!/usr/bin/env bash set -euo pipefail -if [[ "$OSTYPE" == "linux"* ]]; then - WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz" - BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_123/binaryen-version_123-x86_64-linux.tar.gz" -elif [[ "$OSTYPE" == "darwin"* ]]; then - WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-arm64-macos.tar.gz" - BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_123/binaryen-version_123-arm64-macos.tar.gz" -elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then - WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-windows.tar.gz" - BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_123/binaryen-version_123-x86_64-windows.tar.gz" -fi - -# Download tools -mkdir -p tools/ -[ -d "tools/wasi-sdk" ] || curl -#L "$WASI_SDK" | tar xzC tools & -[ -d "tools/binaryen" ] || curl -#L "$BINARYEN" | tar xzC tools & -wait - -[ -d "tools/wasi-sdk" ] || mv "tools/wasi-sdk"* "tools/wasi-sdk" -[ -d "tools/binaryen" ] || mv "tools/binaryen"* "tools/binaryen" - # Download and build SQLite sqlite3/download.sh +sqlite3/tools.sh embed/build.sh embed/bcw2/build.sh diff --git a/sqlite3/libc/benchmark.sh b/sqlite3/libc/benchmark.sh new file mode 100755 index 0000000..1fabb25 --- /dev/null +++ b/sqlite3/libc/benchmark.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd -P -- "$(dirname -- "$0")" + +touch empty.S +./build.sh empty.S +go test -bench=. +rm -f empty.S + +./build.sh +go test -bench=. \ No newline at end of file diff --git a/sqlite3/libc/build.sh b/sqlite3/libc/build.sh index 9dcd5be..7d8443a 100755 --- a/sqlite3/libc/build.sh +++ b/sqlite3/libc/build.sh @@ -6,11 +6,13 @@ cd -P -- "$(dirname -- "$0")" ROOT=../../ BINARYEN="$ROOT/tools/binaryen/bin" WASI_SDK="$ROOT/tools/wasi-sdk/bin" +SRCS="${1:-../strings.c}" +"../tools.sh" trap 'rm -f libc.tmp' EXIT "$WASI_SDK/clang" --target=wasm32-wasi -std=c23 -g0 -O2 \ - -o libc.wasm ../strings.c \ + -o libc.wasm "$SRCS" \ -mexec-model=reactor \ -msimd128 -mmutable-globals -mmultivalue \ -mbulk-memory -mreference-types \ diff --git a/sqlite3/tools.sh b/sqlite3/tools.sh new file mode 100755 index 0000000..6edff65 --- /dev/null +++ b/sqlite3/tools.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd -P -- "$(dirname -- "$0")" + +ROOT=../ + +if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then + WASI_SDK="x86_64-windows" + BINARYEN="x86_64-windows" +elif [[ "$OSTYPE" == "linux"* ]]; then + if [[ "$(uname -m)" == "x86_64" ]]; then + WASI_SDK="x86_64-linux" + BINARYEN="x86_64-linux" + else + WASI_SDK="arm64-linux" + BINARYEN="aarch64-linux" + fi +elif [[ "$OSTYPE" == "darwin"* ]]; then + if [[ "$(uname -m)" == "x86_64" ]]; then + WASI_SDK="x86_64-macos" + BINARYEN="x86_64-macos" + else + WASI_SDK="arm64-macos" + BINARYEN="arm64-macos" + fi +fi + +WASI_SDK="https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-$WASI_SDK.tar.gz" +BINARYEN="https://github.com/WebAssembly/binaryen/releases/download/version_123/binaryen-version_123-$BINARYEN.tar.gz" + +# Download tools +mkdir -p "$ROOT/tools" +[ -d "$ROOT/tools/wasi-sdk" ] || curl -#L "$WASI_SDK" | tar xzC "$ROOT/tools" & +[ -d "$ROOT/tools/binaryen" ] || curl -#L "$BINARYEN" | tar xzC "$ROOT/tools" & +wait + +[ -d "$ROOT/tools/wasi-sdk" ] || mv "$ROOT/tools/wasi-sdk"* "$ROOT/tools/wasi-sdk" +[ -d "$ROOT/tools/binaryen" ] || mv "$ROOT/tools/binaryen"* "$ROOT/tools/binaryen" \ No newline at end of file