From a63b251612e9d6f49aef0dd2683182a03e677e85 Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Sat, 8 Aug 2026 17:20:17 +0000 Subject: [PATCH 1/7] chdb-dataframe: install chdb from a chdb-core CI artifact Fetch the linux-x86_64 chdb_core wheel from a nightly.link-mirrored GitHub Actions artifact instead of `pip install chdb`, to benchmark an unreleased chDB build. The cp39-abi3 wheel imports as `chdb`, so server.py needs no change. Co-Authored-By: Claude Opus 4.8 --- chdb-dataframe/install | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/chdb-dataframe/install b/chdb-dataframe/install index d1c83816b3..547fc75d13 100755 --- a/chdb-dataframe/install +++ b/chdb-dataframe/install @@ -2,11 +2,37 @@ set -e sudo apt-get update -y -sudo apt-get install -y python3-pip python3-venv +sudo apt-get install -y python3-pip python3-venv unzip if [ ! -d myenv ]; then python3 -m venv myenv fi # shellcheck disable=SC1091 source myenv/bin/activate -pip install --quiet pandas pyarrow chdb fastapi uvicorn + +# Everything except chdb still comes from PyPI. +pip install --quiet pandas pyarrow fastapi uvicorn + +# chdb: install a specific chdb-core CI build instead of the PyPI `chdb` +# release, to benchmark an unreleased build. The artifact is +# chdb-io/chdb-core's linux-x86_64 build, mirrored by nightly.link so the +# benchmark machine can fetch it without a GitHub token. It ships a +# cp39-abi3 wheel that imports as `chdb` (server.py is unchanged), next to +# libchdb tarballs and debug info we don't need. +CHDB_ARTIFACT_URL="${CHDB_ARTIFACT_URL:-https://nightly.link/chdb-io/chdb-core/actions/artifacts/8990204903.zip}" +rm -rf chdb-artifact chdb-artifact.zip +curl -fSL --retry 3 -o chdb-artifact.zip "$CHDB_ARTIFACT_URL" +unzip -q -o chdb-artifact.zip 'dist/*.whl' -d chdb-artifact + +# The full wheel, not chdb_core_lite. +wheel=$(ls chdb-artifact/dist/chdb_core-*.whl 2>/dev/null | grep -v _lite | head -n1) +if [ -z "$wheel" ]; then + echo "install: no chdb_core wheel found in artifact:" >&2 + ls -la chdb-artifact/dist/ >&2 || true + exit 1 +fi +echo "install: installing $wheel" +pip install --quiet "$wheel" + +# Fail at install (not query) time if the wheel is broken or lacks chdb. +python3 -c "import chdb; print('chdb', chdb.__version__)" From c381ad53a09c15ff51459ff1d14fb7ddd21cf04f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Aug 2026 18:54:17 +0000 Subject: [PATCH 2/7] Add benchmark results for chdb-dataframe (c6a.metal) --- .../results/20260808/c6a.metal.json | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 chdb-dataframe/results/20260808/c6a.metal.json diff --git a/chdb-dataframe/results/20260808/c6a.metal.json b/chdb-dataframe/results/20260808/c6a.metal.json new file mode 100644 index 0000000000..c8a941059f --- /dev/null +++ b/chdb-dataframe/results/20260808/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (DataFrame)", + "date": "2026-08-08", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless","Python","dataframe","in-memory","lukewarm-cold-run"], + "load_time": 18, + "data_size": 81770409884, + "concurrent_qps": 2.503, + "concurrent_error_ratio": 0, + "result": [ + [71.519, 0.357, 0.057], + [71.903, 0.415, 0.088], + [71.805, 0.038, 0.04], + [71.794, 0.035, 0.035], + [72.034, 0.088, 0.089], + [71.551, 0.112, 0.11], + [71.378, 0.031, 0.028], + [71.28, 0.406, 0.1], + [72.727, 0.818, 0.832], + [72.337, 0.899, 0.883], + [71.655, 1.292, 0.908], + [71.843, 0.725, 0.384], + [72.306, 0.952, 0.648], + [73.298, 2.036, 1.716], + [71.837, 0.605, 0.285], + [71.744, 0.184, 0.181], + [71.655, 0.307, 0.313], + [71.804, 0.232, 0.235], + [72.869, 0.532, 0.531], + [71.566, 0.408, 0.087], + [71.947, 0.553, 0.226], + [71.899, 0.478, 0.15], + [71.938, 0.525, 0.218], + [72.936, 1.675, 1.321], + [71.546, 0.449, 0.112], + [71.438, 0.43, 0.103], + [71.761, 0.446, 0.12], + [71.789, 0.548, 0.23], + [73.656, 1.567, 1.226], + [71.859, 0.064, 0.064], + [72.29, 0.896, 0.564], + [72.276, 0.635, 0.301], + [72.702, 1.007, 0.99], + [71.904, 0.792, 0.793], + [72.292, 0.815, 0.795], + [71.54, 0.19, 0.189], + [71.994, 0.642, 0.315], + [72.023, 0.568, 0.252], + [71.669, 0.575, 0.242], + [71.857, 0.565, 0.254], + [71.816, 0.618, 0.3], + [71.978, 0.589, 0.26], + [71.753, 0.552, 0.242] +] + } + \ No newline at end of file From 54d7e4ae3786b62b89bf0cf93cee67c15171c7fd Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Mon, 10 Aug 2026 06:33:00 +0000 Subject: [PATCH 3/7] chdb-dataframe: benchmark chdb-core run 31350619096 (pandas-scan-zero-copy) Point the wheel URL at the pandas-scan-zero-copy build and make wheel extraction layout-robust (this artifact ships the wheel at the zip root, the previous one under dist/). Co-Authored-By: Claude Opus 4.8 --- chdb-dataframe/install | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/chdb-dataframe/install b/chdb-dataframe/install index 547fc75d13..3a7b5b7ee2 100755 --- a/chdb-dataframe/install +++ b/chdb-dataframe/install @@ -19,16 +19,17 @@ pip install --quiet pandas pyarrow fastapi uvicorn # benchmark machine can fetch it without a GitHub token. It ships a # cp39-abi3 wheel that imports as `chdb` (server.py is unchanged), next to # libchdb tarballs and debug info we don't need. -CHDB_ARTIFACT_URL="${CHDB_ARTIFACT_URL:-https://nightly.link/chdb-io/chdb-core/actions/artifacts/8990204903.zip}" +CHDB_ARTIFACT_URL="${CHDB_ARTIFACT_URL:-https://nightly.link/chdb-io/chdb-core/actions/runs/31350619096/chdb-artifacts-linux-x86_64.zip}" rm -rf chdb-artifact chdb-artifact.zip curl -fSL --retry 3 -o chdb-artifact.zip "$CHDB_ARTIFACT_URL" -unzip -q -o chdb-artifact.zip 'dist/*.whl' -d chdb-artifact +# Flatten (-j): wheels sit at the zip root or under dist/ depending on the build. +unzip -q -o -j chdb-artifact.zip '*.whl' -d chdb-artifact # The full wheel, not chdb_core_lite. -wheel=$(ls chdb-artifact/dist/chdb_core-*.whl 2>/dev/null | grep -v _lite | head -n1) +wheel=$(ls chdb-artifact/chdb_core-*.whl 2>/dev/null | grep -v _lite | head -n1) if [ -z "$wheel" ]; then echo "install: no chdb_core wheel found in artifact:" >&2 - ls -la chdb-artifact/dist/ >&2 || true + ls -la chdb-artifact/ >&2 || true exit 1 fi echo "install: installing $wheel" From 79a8559d65920a16858a4a18c559ab53a4dbe12c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 08:42:54 +0000 Subject: [PATCH 4/7] Add benchmark results for chdb-dataframe (c6a.metal) --- .../results/20260810/c6a.metal.json | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 chdb-dataframe/results/20260810/c6a.metal.json diff --git a/chdb-dataframe/results/20260810/c6a.metal.json b/chdb-dataframe/results/20260810/c6a.metal.json new file mode 100644 index 0000000000..7ab0b96291 --- /dev/null +++ b/chdb-dataframe/results/20260810/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (DataFrame)", + "date": "2026-08-10", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless","Python","dataframe","in-memory","lukewarm-cold-run"], + "load_time": 19, + "data_size": 81770409884, + "concurrent_qps": 2.885, + "concurrent_error_ratio": 0, + "result": [ + [72.251, 0.003, 0.003], + [72.395, 0.038, 0.028], + [71.981, 0.037, 0.036], + [71.606, 0.034, 0.035], + [71.868, 0.084, 0.08], + [72.058, 0.11, 0.103], + [72.12, 0.029, 0.026], + [71.568, 0.036, 0.033], + [72.796, 0.739, 0.772], + [72.557, 0.83, 0.823], + [72.998, 0.648, 0.632], + [72.599, 0.385, 0.378], + [72.311, 0.592, 0.585], + [73.957, 1.522, 1.533], + [72.871, 0.214, 0.254], + [71.955, 0.177, 0.179], + [72.096, 0.286, 0.29], + [72.011, 0.215, 0.216], + [72.648, 0.505, 0.516], + [71.947, 0.034, 0.046], + [72.422, 0.094, 0.094], + [71.803, 0.181, 0.17], + [72.02, 0.295, 0.283], + [73.143, 1.193, 1.225], + [71.594, 0.148, 0.134], + [72.19, 0.099, 0.096], + [71.517, 0.079, 0.128], + [72.516, 0.133, 0.127], + [73.189, 1.034, 1.046], + [71.745, 0.072, 0.062], + [72.471, 0.467, 0.518], + [72.481, 0.271, 0.258], + [72.955, 1.016, 1.005], + [72.592, 0.722, 0.694], + [72.715, 0.705, 0.725], + [72.02, 0.179, 0.172], + [71.827, 0.327, 0.327], + [72.78, 0.222, 0.228], + [71.632, 0.232, 0.241], + [72.376, 0.206, 0.225], + [72.092, 0.227, 0.216], + [71.973, 0.179, 0.182], + [72.279, 0.164, 0.163] +] + } + \ No newline at end of file From 0990cae892e85f812cee8389da7ae582c13b8f73 Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Mon, 10 Aug 2026 10:11:20 +0000 Subject: [PATCH 5/7] chdb-dataframe: benchmark chdb-core run 31375897647 (session metadata cache + zero-copy buffer mounts) Point the wheel URL at chdb-core PR #170 build 31375897647. Co-Authored-By: Claude Opus 4.8 --- chdb-dataframe/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chdb-dataframe/install b/chdb-dataframe/install index 3a7b5b7ee2..deb59d0957 100755 --- a/chdb-dataframe/install +++ b/chdb-dataframe/install @@ -19,7 +19,7 @@ pip install --quiet pandas pyarrow fastapi uvicorn # benchmark machine can fetch it without a GitHub token. It ships a # cp39-abi3 wheel that imports as `chdb` (server.py is unchanged), next to # libchdb tarballs and debug info we don't need. -CHDB_ARTIFACT_URL="${CHDB_ARTIFACT_URL:-https://nightly.link/chdb-io/chdb-core/actions/runs/31350619096/chdb-artifacts-linux-x86_64.zip}" +CHDB_ARTIFACT_URL="${CHDB_ARTIFACT_URL:-https://nightly.link/chdb-io/chdb-core/actions/runs/31375897647/chdb-artifacts-linux-x86_64.zip}" rm -rf chdb-artifact chdb-artifact.zip curl -fSL --retry 3 -o chdb-artifact.zip "$CHDB_ARTIFACT_URL" # Flatten (-j): wheels sit at the zip root or under dist/ depending on the build. From fae4ef1117ae0fbc530171119a575eea9dcc7f28 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 11:31:15 +0000 Subject: [PATCH 6/7] Add benchmark results for chdb-dataframe (c6a.metal) --- .../results/20260810/c6a.metal.json | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/chdb-dataframe/results/20260810/c6a.metal.json b/chdb-dataframe/results/20260810/c6a.metal.json index 7ab0b96291..fbac0c485f 100644 --- a/chdb-dataframe/results/20260810/c6a.metal.json +++ b/chdb-dataframe/results/20260810/c6a.metal.json @@ -7,54 +7,54 @@ "hardware": "cpu", "tuned": "no", "tags": ["C++","column-oriented","ClickHouse derivative","embedded","stateless","Python","dataframe","in-memory","lukewarm-cold-run"], - "load_time": 19, + "load_time": 18, "data_size": 81770409884, - "concurrent_qps": 2.885, + "concurrent_qps": 4.728, "concurrent_error_ratio": 0, "result": [ - [72.251, 0.003, 0.003], - [72.395, 0.038, 0.028], - [71.981, 0.037, 0.036], - [71.606, 0.034, 0.035], - [71.868, 0.084, 0.08], - [72.058, 0.11, 0.103], - [72.12, 0.029, 0.026], - [71.568, 0.036, 0.033], - [72.796, 0.739, 0.772], - [72.557, 0.83, 0.823], - [72.998, 0.648, 0.632], - [72.599, 0.385, 0.378], - [72.311, 0.592, 0.585], - [73.957, 1.522, 1.533], - [72.871, 0.214, 0.254], - [71.955, 0.177, 0.179], - [72.096, 0.286, 0.29], - [72.011, 0.215, 0.216], - [72.648, 0.505, 0.516], - [71.947, 0.034, 0.046], - [72.422, 0.094, 0.094], - [71.803, 0.181, 0.17], - [72.02, 0.295, 0.283], - [73.143, 1.193, 1.225], - [71.594, 0.148, 0.134], - [72.19, 0.099, 0.096], - [71.517, 0.079, 0.128], - [72.516, 0.133, 0.127], - [73.189, 1.034, 1.046], - [71.745, 0.072, 0.062], - [72.471, 0.467, 0.518], - [72.481, 0.271, 0.258], - [72.955, 1.016, 1.005], - [72.592, 0.722, 0.694], - [72.715, 0.705, 0.725], - [72.02, 0.179, 0.172], - [71.827, 0.327, 0.327], - [72.78, 0.222, 0.228], - [71.632, 0.232, 0.241], - [72.376, 0.206, 0.225], - [72.092, 0.227, 0.216], - [71.973, 0.179, 0.182], - [72.279, 0.164, 0.163] + [71.955, 0.004, 0.003], + [72.016, 0.024, 0.024], + [71.882, 0.04, 0.033], + [71.962, 0.031, 0.032], + [72.333, 0.085, 0.079], + [72.37, 0.103, 0.099], + [72.715, 0.025, 0.024], + [71.994, 0.03, 0.029], + [72.301, 0.347, 0.324], + [72.374, 0.362, 0.376], + [72.809, 0.477, 0.509], + [72.358, 0.189, 0.169], + [71.732, 0.222, 0.221], + [72.772, 0.512, 0.514], + [71.921, 0.152, 0.144], + [72.25, 0.121, 0.118], + [71.882, 0.277, 0.273], + [72.259, 0.209, 0.21], + [72.955, 0.515, 0.515], + [71.833, 0.034, 0.036], + [72.117, 0.086, 0.084], + [72.127, 0.093, 0.093], + [71.723, 0.163, 0.165], + [72.672, 0.814, 0.758], + [72.207, 0.062, 0.057], + [71.923, 0.04, 0.039], + [72.567, 0.056, 0.055], + [72.448, 0.117, 0.11], + [72.959, 0.452, 0.456], + [72.234, 0.058, 0.058], + [72.216, 0.208, 0.203], + [72.693, 0.198, 0.201], + [73.159, 1.07, 1.084], + [72.48, 0.472, 0.468], + [72.792, 0.467, 0.467], + [72.03, 0.11, 0.106], + [72.431, 0.13, 0.124], + [72.185, 0.098, 0.096], + [72.097, 0.101, 0.105], + [71.862, 0.122, 0.129], + [72.045, 0.109, 0.103], + [72.105, 0.099, 0.101], + [72.143, 0.075, 0.077] ] } \ No newline at end of file From d6cdc374fb5dd4e73482ee9d7d1d7c1ad8f85f5d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 16:58:00 +0000 Subject: [PATCH 7/7] Add benchmark results for polars-dataframe (c6a.metal) --- .../results/20260810/c6a.metal.json | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 polars-dataframe/results/20260810/c6a.metal.json diff --git a/polars-dataframe/results/20260810/c6a.metal.json b/polars-dataframe/results/20260810/c6a.metal.json new file mode 100644 index 0000000000..b9bbba2fb5 --- /dev/null +++ b/polars-dataframe/results/20260810/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (DataFrame)", + "date": "2026-08-10", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","dataframe","in-memory"], + "load_time": 5, + "data_size": 58970980436, + "concurrent_qps": 4.772, + "concurrent_error_ratio": 0, + "result": [ + [58, 0.003, 0.002], + [58.501, 0.009, 0.011], + [58.228, 0.011, 0.011], + [58.11, 0.015, 0.015], + [58.369, 0.132, 0.125], + [58.5, 0.22, 0.224], + [58.034, 0.011, 0.011], + [58.191, 0.027, 0.03], + [58.881, 0.476, 0.489], + [58.95, 0.533, 0.521], + [58.439, 0.101, 0.099], + [58.374, 0.107, 0.107], + [58.432, 0.199, 0.207], + [58.586, 0.427, 0.415], + [58.633, 0.275, 0.288], + [58.432, 0.21, 0.228], + [59.096, 0.71, 0.709], + [58.845, 0.622, 0.626], + [59.486, 1.135, 1.138], + [58.123, 0.015, 0.015], + [58.511, 0.123, 0.12], + [58.546, 0.169, 0.163], + [58.465, 0.296, 0.282], + [58.413, 0.243, 0.227], + [58.229, 0.047, 0.049], + [58.448, 0.049, 0.046], + [58.17, 0.077, 0.081], + [58.523, 0.261, 0.247], + [59.31, 0.983, 0.984], + [58.34, 0.041, 0.038], + [58.492, 0.245, 0.243], + [58.604, 0.269, 0.268], + [59.775, 1.496, 1.433], + [59.35, 1.114, 1.071], + [59.216, 0.85, 0.828], + [58.7, 0.205, 0.201], + [58.387, 0.087, 0.087], + [58.289, 0.072, 0.071], + [58.376, 0.041, 0.043], + [58.301, 0.096, 0.082], + [58.305, 0.078, 0.074], + [58.337, 0.052, 0.048], + [58.198, 0.041, 0.044] +] + } + \ No newline at end of file