bench: real-world tier — ripgrep 15.2.0, sqlite 3.45.1, typescript 5.9.3, guava 33.7.1 (pinned, guarded, both twins)Unverified
a4751cd parent: 7764675 modified
.github/workflows/bench.yml +50 -1 | @@ -28,7 +28,7 @@ env: | ||
| 28 | 28 | jobs: |
| 29 | 29 | bench: |
| 30 | 30 | runs-on: ubuntu-latest |
| 31 | - timeout-minutes: 30 | |
| 31 | + timeout-minutes: 45 | |
| 32 | 32 | steps: |
| 33 | 33 | # Pin comment policy mirrors rickub's own ci.yml: SHA-pinned actions. |
| 34 | 34 | - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 |
| @@ -76,6 +76,55 @@ jobs: | ||
| 76 | 76 | bench_skip docker-build "docker not available on runner" |
| 77 | 77 | fi |
| 78 | 78 | |
| 79 | + # --- real-world tier: notorious OSS at pinned tags ---------------------- | |
| 80 | + # Each step clones/downloads its project INSIDE the timed window (network | |
| 81 | + # is part of a real build) and builds cold — every run is a fresh VM by | |
| 82 | + # construction. Toolchains are guarded: a runner without the tool records | |
| 83 | + # "skipped", never fails the race. ClickHouse itself is deliberately not | |
| 84 | + # here: a full build needs dozens of cores and ~100 GB, which no shared- | |
| 85 | + # runner tier provides — SQLite's amalgamation stands in for C/C++ (see | |
| 86 | + # README). | |
| 87 | + | |
| 88 | + - name: rust real build (ripgrep 15.2.0) | |
| 89 | + run: | | |
| 90 | + set -euo pipefail | |
| 91 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 92 | + if command -v cargo >/dev/null 2>&1; then | |
| 93 | + bench_step rust-ripgrep bash -ec \ | |
| 94 | + 'rm -rf /tmp/real-ripgrep && git clone -q --depth 1 --branch 15.2.0 https://github.com/BurntSushi/ripgrep /tmp/real-ripgrep && cd /tmp/real-ripgrep && cargo build --release' | |
| 95 | + else | |
| 96 | + bench_skip rust-ripgrep "cargo not available on runner" | |
| 97 | + fi | |
| 98 | + | |
| 99 | + - name: c/c++ real build (sqlite 3.45.1 amalgamation) | |
| 100 | + run: | | |
| 101 | + set -euo pipefail | |
| 102 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 103 | + bench_step cpp-sqlite bash -ec \ | |
| 104 | + 'rm -rf /tmp/real-sqlite && mkdir -p /tmp/real-sqlite && cd /tmp/real-sqlite && curl -fsSL https://sqlite.org/2024/sqlite-autoconf-3450100.tar.gz | tar xz --strip-components=1 && ./configure --disable-tcl && make -j"$(nproc)"' | |
| 105 | + | |
| 106 | + - name: node real build (typescript v5.9.3) | |
| 107 | + run: | | |
| 108 | + set -euo pipefail | |
| 109 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 110 | + if command -v node >/dev/null 2>&1; then | |
| 111 | + bench_step node-typescript bash -ec \ | |
| 112 | + 'rm -rf /tmp/real-ts && git clone -q --depth 1 --branch v5.9.3 https://github.com/microsoft/TypeScript /tmp/real-ts && cd /tmp/real-ts && npm ci --no-audit --no-fund && npm run build' | |
| 113 | + else | |
| 114 | + bench_skip node-typescript "node not available on runner" | |
| 115 | + fi | |
| 116 | + | |
| 117 | + - name: java real build (guava v33.7.1) | |
| 118 | + run: | | |
| 119 | + set -euo pipefail | |
| 120 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 121 | + if command -v mvn >/dev/null 2>&1; then | |
| 122 | + bench_step java-guava bash -ec \ | |
| 123 | + 'rm -rf /tmp/real-guava && git clone -q --depth 1 --branch v33.7.1 https://github.com/google/guava /tmp/real-guava && cd /tmp/real-guava && mvn -B -q -DskipTests compile' | |
| 124 | + else | |
| 125 | + bench_skip java-guava "maven not available on runner" | |
| 126 | + fi | |
| 127 | + | |
| 79 | 128 | - name: probe runner |
| 80 | 129 | run: bash workloads/probe/probe.sh |
| 81 | 130 | |
| @@ -28,7 +28,7 @@ env: | |||
| 28 | jobs: | 28 | jobs: |
| 29 | bench: | 29 | bench: |
| 30 | runs-on: ubuntu-latest | 30 | runs-on: ubuntu-latest |
| 31 | - timeout-minutes: 30 | 31 | + timeout-minutes: 45 |
| 32 | steps: | 32 | steps: |
| 33 | # Pin comment policy mirrors rickub's own ci.yml: SHA-pinned actions. | 33 | # Pin comment policy mirrors rickub's own ci.yml: SHA-pinned actions. |
| 34 | - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | 34 | - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 |
| @@ -76,6 +76,55 @@ jobs: | |||
| 76 | bench_skip docker-build "docker not available on runner" | 76 | bench_skip docker-build "docker not available on runner" |
| 77 | fi | 77 | fi |
| 78 | 78 | ||
| 79 | + # --- real-world tier: notorious OSS at pinned tags ---------------------- | ||
| 80 | + # Each step clones/downloads its project INSIDE the timed window (network | ||
| 81 | + # is part of a real build) and builds cold — every run is a fresh VM by | ||
| 82 | + # construction. Toolchains are guarded: a runner without the tool records | ||
| 83 | + # "skipped", never fails the race. ClickHouse itself is deliberately not | ||
| 84 | + # here: a full build needs dozens of cores and ~100 GB, which no shared- | ||
| 85 | + # runner tier provides — SQLite's amalgamation stands in for C/C++ (see | ||
| 86 | + # README). | ||
| 87 | + | ||
| 88 | + - name: rust real build (ripgrep 15.2.0) | ||
| 89 | + run: | | ||
| 90 | + set -euo pipefail | ||
| 91 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 92 | + if command -v cargo >/dev/null 2>&1; then | ||
| 93 | + bench_step rust-ripgrep bash -ec \ | ||
| 94 | + 'rm -rf /tmp/real-ripgrep && git clone -q --depth 1 --branch 15.2.0 https://github.com/BurntSushi/ripgrep /tmp/real-ripgrep && cd /tmp/real-ripgrep && cargo build --release' | ||
| 95 | + else | ||
| 96 | + bench_skip rust-ripgrep "cargo not available on runner" | ||
| 97 | + fi | ||
| 98 | + | ||
| 99 | + - name: c/c++ real build (sqlite 3.45.1 amalgamation) | ||
| 100 | + run: | | ||
| 101 | + set -euo pipefail | ||
| 102 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 103 | + bench_step cpp-sqlite bash -ec \ | ||
| 104 | + 'rm -rf /tmp/real-sqlite && mkdir -p /tmp/real-sqlite && cd /tmp/real-sqlite && curl -fsSL https://sqlite.org/2024/sqlite-autoconf-3450100.tar.gz | tar xz --strip-components=1 && ./configure --disable-tcl && make -j"$(nproc)"' | ||
| 105 | + | ||
| 106 | + - name: node real build (typescript v5.9.3) | ||
| 107 | + run: | | ||
| 108 | + set -euo pipefail | ||
| 109 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 110 | + if command -v node >/dev/null 2>&1; then | ||
| 111 | + bench_step node-typescript bash -ec \ | ||
| 112 | + 'rm -rf /tmp/real-ts && git clone -q --depth 1 --branch v5.9.3 https://github.com/microsoft/TypeScript /tmp/real-ts && cd /tmp/real-ts && npm ci --no-audit --no-fund && npm run build' | ||
| 113 | + else | ||
| 114 | + bench_skip node-typescript "node not available on runner" | ||
| 115 | + fi | ||
| 116 | + | ||
| 117 | + - name: java real build (guava v33.7.1) | ||
| 118 | + run: | | ||
| 119 | + set -euo pipefail | ||
| 120 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 121 | + if command -v mvn >/dev/null 2>&1; then | ||
| 122 | + bench_step java-guava bash -ec \ | ||
| 123 | + 'rm -rf /tmp/real-guava && git clone -q --depth 1 --branch v33.7.1 https://github.com/google/guava /tmp/real-guava && cd /tmp/real-guava && mvn -B -q -DskipTests compile' | ||
| 124 | + else | ||
| 125 | + bench_skip java-guava "maven not available on runner" | ||
| 126 | + fi | ||
| 127 | + | ||
| 79 | - name: probe runner | 128 | - name: probe runner |
| 80 | run: bash workloads/probe/probe.sh | 129 | run: bash workloads/probe/probe.sh |
| 81 | 130 | ||
modified
.rickub/workflows/bench.yml +50 -1 | @@ -34,7 +34,7 @@ env: | ||
| 34 | 34 | jobs: |
| 35 | 35 | bench: |
| 36 | 36 | runs-on: large |
| 37 | - timeout-minutes: 30 | |
| 37 | + timeout-minutes: 45 | |
| 38 | 38 | steps: |
| 39 | 39 | - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 |
| 40 | 40 | |
| @@ -85,6 +85,55 @@ jobs: | ||
| 85 | 85 | bench_skip docker-build "docker not available on runner" |
| 86 | 86 | fi |
| 87 | 87 | |
| 88 | + # --- real-world tier: notorious OSS at pinned tags ---------------------- | |
| 89 | + # Each step clones/downloads its project INSIDE the timed window (network | |
| 90 | + # is part of a real build) and builds cold — every run is a fresh VM by | |
| 91 | + # construction. Toolchains are guarded: a runner without the tool records | |
| 92 | + # "skipped", never fails the race. ClickHouse itself is deliberately not | |
| 93 | + # here: a full build needs dozens of cores and ~100 GB, which no shared- | |
| 94 | + # runner tier provides — SQLite's amalgamation stands in for C/C++ (see | |
| 95 | + # README). | |
| 96 | + | |
| 97 | + - name: rust real build (ripgrep 15.2.0) | |
| 98 | + run: | | |
| 99 | + set -euo pipefail | |
| 100 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 101 | + if command -v cargo >/dev/null 2>&1; then | |
| 102 | + bench_step rust-ripgrep bash -ec \ | |
| 103 | + 'rm -rf /tmp/real-ripgrep && git clone -q --depth 1 --branch 15.2.0 https://github.com/BurntSushi/ripgrep /tmp/real-ripgrep && cd /tmp/real-ripgrep && cargo build --release' | |
| 104 | + else | |
| 105 | + bench_skip rust-ripgrep "cargo not available on runner" | |
| 106 | + fi | |
| 107 | + | |
| 108 | + - name: c/c++ real build (sqlite 3.45.1 amalgamation) | |
| 109 | + run: | | |
| 110 | + set -euo pipefail | |
| 111 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 112 | + bench_step cpp-sqlite bash -ec \ | |
| 113 | + 'rm -rf /tmp/real-sqlite && mkdir -p /tmp/real-sqlite && cd /tmp/real-sqlite && curl -fsSL https://sqlite.org/2024/sqlite-autoconf-3450100.tar.gz | tar xz --strip-components=1 && ./configure --disable-tcl && make -j"$(nproc)"' | |
| 114 | + | |
| 115 | + - name: node real build (typescript v5.9.3) | |
| 116 | + run: | | |
| 117 | + set -euo pipefail | |
| 118 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 119 | + if command -v node >/dev/null 2>&1; then | |
| 120 | + bench_step node-typescript bash -ec \ | |
| 121 | + 'rm -rf /tmp/real-ts && git clone -q --depth 1 --branch v5.9.3 https://github.com/microsoft/TypeScript /tmp/real-ts && cd /tmp/real-ts && npm ci --no-audit --no-fund && npm run build' | |
| 122 | + else | |
| 123 | + bench_skip node-typescript "node not available on runner" | |
| 124 | + fi | |
| 125 | + | |
| 126 | + - name: java real build (guava v33.7.1) | |
| 127 | + run: | | |
| 128 | + set -euo pipefail | |
| 129 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | |
| 130 | + if command -v mvn >/dev/null 2>&1; then | |
| 131 | + bench_step java-guava bash -ec \ | |
| 132 | + 'rm -rf /tmp/real-guava && git clone -q --depth 1 --branch v33.7.1 https://github.com/google/guava /tmp/real-guava && cd /tmp/real-guava && mvn -B -q -DskipTests compile' | |
| 133 | + else | |
| 134 | + bench_skip java-guava "maven not available on runner" | |
| 135 | + fi | |
| 136 | + | |
| 88 | 137 | - name: probe runner |
| 89 | 138 | run: bash workloads/probe/probe.sh |
| 90 | 139 | |
| @@ -34,7 +34,7 @@ env: | |||
| 34 | jobs: | 34 | jobs: |
| 35 | bench: | 35 | bench: |
| 36 | runs-on: large | 36 | runs-on: large |
| 37 | - timeout-minutes: 30 | 37 | + timeout-minutes: 45 |
| 38 | steps: | 38 | steps: |
| 39 | - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | 39 | - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 |
| 40 | 40 | ||
| @@ -85,6 +85,55 @@ jobs: | |||
| 85 | bench_skip docker-build "docker not available on runner" | 85 | bench_skip docker-build "docker not available on runner" |
| 86 | fi | 86 | fi |
| 87 | 87 | ||
| 88 | + # --- real-world tier: notorious OSS at pinned tags ---------------------- | ||
| 89 | + # Each step clones/downloads its project INSIDE the timed window (network | ||
| 90 | + # is part of a real build) and builds cold — every run is a fresh VM by | ||
| 91 | + # construction. Toolchains are guarded: a runner without the tool records | ||
| 92 | + # "skipped", never fails the race. ClickHouse itself is deliberately not | ||
| 93 | + # here: a full build needs dozens of cores and ~100 GB, which no shared- | ||
| 94 | + # runner tier provides — SQLite's amalgamation stands in for C/C++ (see | ||
| 95 | + # README). | ||
| 96 | + | ||
| 97 | + - name: rust real build (ripgrep 15.2.0) | ||
| 98 | + run: | | ||
| 99 | + set -euo pipefail | ||
| 100 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 101 | + if command -v cargo >/dev/null 2>&1; then | ||
| 102 | + bench_step rust-ripgrep bash -ec \ | ||
| 103 | + 'rm -rf /tmp/real-ripgrep && git clone -q --depth 1 --branch 15.2.0 https://github.com/BurntSushi/ripgrep /tmp/real-ripgrep && cd /tmp/real-ripgrep && cargo build --release' | ||
| 104 | + else | ||
| 105 | + bench_skip rust-ripgrep "cargo not available on runner" | ||
| 106 | + fi | ||
| 107 | + | ||
| 108 | + - name: c/c++ real build (sqlite 3.45.1 amalgamation) | ||
| 109 | + run: | | ||
| 110 | + set -euo pipefail | ||
| 111 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 112 | + bench_step cpp-sqlite bash -ec \ | ||
| 113 | + 'rm -rf /tmp/real-sqlite && mkdir -p /tmp/real-sqlite && cd /tmp/real-sqlite && curl -fsSL https://sqlite.org/2024/sqlite-autoconf-3450100.tar.gz | tar xz --strip-components=1 && ./configure --disable-tcl && make -j"$(nproc)"' | ||
| 114 | + | ||
| 115 | + - name: node real build (typescript v5.9.3) | ||
| 116 | + run: | | ||
| 117 | + set -euo pipefail | ||
| 118 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 119 | + if command -v node >/dev/null 2>&1; then | ||
| 120 | + bench_step node-typescript bash -ec \ | ||
| 121 | + 'rm -rf /tmp/real-ts && git clone -q --depth 1 --branch v5.9.3 https://github.com/microsoft/TypeScript /tmp/real-ts && cd /tmp/real-ts && npm ci --no-audit --no-fund && npm run build' | ||
| 122 | + else | ||
| 123 | + bench_skip node-typescript "node not available on runner" | ||
| 124 | + fi | ||
| 125 | + | ||
| 126 | + - name: java real build (guava v33.7.1) | ||
| 127 | + run: | | ||
| 128 | + set -euo pipefail | ||
| 129 | + source "${GITHUB_WORKSPACE:-$PWD}/scripts/emit_timing.sh" | ||
| 130 | + if command -v mvn >/dev/null 2>&1; then | ||
| 131 | + bench_step java-guava bash -ec \ | ||
| 132 | + 'rm -rf /tmp/real-guava && git clone -q --depth 1 --branch v33.7.1 https://github.com/google/guava /tmp/real-guava && cd /tmp/real-guava && mvn -B -q -DskipTests compile' | ||
| 133 | + else | ||
| 134 | + bench_skip java-guava "maven not available on runner" | ||
| 135 | + fi | ||
| 136 | + | ||
| 88 | - name: probe runner | 137 | - name: probe runner |
| 89 | run: bash workloads/probe/probe.sh | 138 | run: bash workloads/probe/probe.sh |
| 90 | 139 | ||
added
push-times.json +22 -0 | new file mode 100644 | ||
| @@ -0,0 +1,22 @@ | ||
| 1 | +{ | |
| 2 | + "github/34747021476-1-0baf736": "2026-09-13T08:10:23Z", | |
| 3 | + "github/34747558752-1-9990e0f": "2026-09-13T08:23:19.000Z", | |
| 4 | + "github/34747135670-1-1914eed": "2026-09-13T08:13:05.000Z", | |
| 5 | + "github/34747186494-1-09e7984": "2026-09-13T08:14:22.000Z", | |
| 6 | + "github/34747770747-1-35efc9c": "2026-09-13T08:28:27.000Z", | |
| 7 | + "github/34747992384-1-66a47c3": "2026-09-13T08:33:34.000Z", | |
| 8 | + "github/34747395033-1-8421335": "2026-09-13T08:19:29.000Z", | |
| 9 | + "github/34747825179-1-39ba5db": "2026-09-13T08:29:45.000Z", | |
| 10 | + "github/34747612020-1-fba04eb": "2026-09-13T08:24:37.000Z", | |
| 11 | + "github/34747344847-1-da2d24b": "2026-09-13T08:18:12.000Z", | |
| 12 | + "rickub/3-1-09e7984": "2026-09-13T08:15:40.000Z", | |
| 13 | + "rickub/2-1-1914eed": "2026-09-13T08:11:49.000Z", | |
| 14 | + "rickub/5-1-8421335": "2026-09-13T08:20:47.000Z", | |
| 15 | + "rickub/9-1-39ba5db": "2026-09-13T08:31:02.000Z", | |
| 16 | + "rickub/8-1-35efc9c": "2026-09-13T08:27:10.000Z", | |
| 17 | + "rickub/4-1-da2d24b": "2026-09-13T08:16:56.000Z", | |
| 18 | + "rickub/7-1-fba04eb": "2026-09-13T08:25:54.000Z", | |
| 19 | + "rickub/10-1-66a47c3": "2026-09-13T08:32:18.000Z", | |
| 20 | + "rickub/6-1-9990e0f": "2026-09-13T08:22:03.000Z", | |
| 21 | + "rickub/1-1-0baf736": "2026-09-13T08:10:15Z" | |
| 22 | +} | |
| \ No newline at end of file | ||
| new file mode 100644 | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | +{ | ||
| 2 | + "github/34747021476-1-0baf736": "2026-09-13T08:10:23Z", | ||
| 3 | + "github/34747558752-1-9990e0f": "2026-09-13T08:23:19.000Z", | ||
| 4 | + "github/34747135670-1-1914eed": "2026-09-13T08:13:05.000Z", | ||
| 5 | + "github/34747186494-1-09e7984": "2026-09-13T08:14:22.000Z", | ||
| 6 | + "github/34747770747-1-35efc9c": "2026-09-13T08:28:27.000Z", | ||
| 7 | + "github/34747992384-1-66a47c3": "2026-09-13T08:33:34.000Z", | ||
| 8 | + "github/34747395033-1-8421335": "2026-09-13T08:19:29.000Z", | ||
| 9 | + "github/34747825179-1-39ba5db": "2026-09-13T08:29:45.000Z", | ||
| 10 | + "github/34747612020-1-fba04eb": "2026-09-13T08:24:37.000Z", | ||
| 11 | + "github/34747344847-1-da2d24b": "2026-09-13T08:18:12.000Z", | ||
| 12 | + "rickub/3-1-09e7984": "2026-09-13T08:15:40.000Z", | ||
| 13 | + "rickub/2-1-1914eed": "2026-09-13T08:11:49.000Z", | ||
| 14 | + "rickub/5-1-8421335": "2026-09-13T08:20:47.000Z", | ||
| 15 | + "rickub/9-1-39ba5db": "2026-09-13T08:31:02.000Z", | ||
| 16 | + "rickub/8-1-35efc9c": "2026-09-13T08:27:10.000Z", | ||
| 17 | + "rickub/4-1-da2d24b": "2026-09-13T08:16:56.000Z", | ||
| 18 | + "rickub/7-1-fba04eb": "2026-09-13T08:25:54.000Z", | ||
| 19 | + "rickub/10-1-66a47c3": "2026-09-13T08:32:18.000Z", | ||
| 20 | + "rickub/6-1-9990e0f": "2026-09-13T08:22:03.000Z", | ||
| 21 | + "rickub/1-1-0baf736": "2026-09-13T08:10:15Z" | ||
| 22 | +} | ||
| \ No newline at end of file | \ No newline at end of file | ||