diff --git a/chdb-dataframe/install b/chdb-dataframe/install index d1c83816b3..98e0957273 100755 --- a/chdb-dataframe/install +++ b/chdb-dataframe/install @@ -2,11 +2,38 @@ 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/runs/31572981058/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. +unzip -q -o -j chdb-artifact.zip '*.whl' -d chdb-artifact + +# The full wheel, not chdb_core_lite. +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/ >&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__)" 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 diff --git a/chdb-dataframe/results/20260810/c6a.metal.json b/chdb-dataframe/results/20260810/c6a.metal.json new file mode 100644 index 0000000000..fbac0c485f --- /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": 18, + "data_size": 81770409884, + "concurrent_qps": 4.728, + "concurrent_error_ratio": 0, + "result": [ + [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 diff --git a/chdb-dataframe/results/20260812/c6a.metal.json b/chdb-dataframe/results/20260812/c6a.metal.json new file mode 100644 index 0000000000..3c38c0aacc --- /dev/null +++ b/chdb-dataframe/results/20260812/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "chDB (DataFrame)", + "date": "2026-08-12", + "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": 4.687, + "concurrent_error_ratio": 0, + "result": [ + [72.101, 0.003, 0.003], + [72.488, 0.026, 0.026], + [72.105, 0.034, 0.034], + [71.992, 0.033, 0.034], + [72.018, 0.088, 0.089], + [72.046, 0.103, 0.107], + [72.354, 0.025, 0.023], + [71.842, 0.031, 0.032], + [72.289, 0.319, 0.36], + [73.029, 0.377, 0.377], + [72.488, 0.493, 0.495], + [72.037, 0.174, 0.203], + [72.351, 0.233, 0.228], + [72.575, 0.528, 0.53], + [72.321, 0.154, 0.156], + [72.22, 0.118, 0.116], + [72.126, 0.281, 0.281], + [71.807, 0.209, 0.21], + [72.37, 0.517, 0.522], + [72.052, 0.042, 0.035], + [72.067, 0.087, 0.087], + [72.163, 0.097, 0.085], + [72.722, 0.166, 0.152], + [72.762, 0.802, 0.783], + [72.075, 0.056, 0.056], + [71.959, 0.04, 0.039], + [72.206, 0.055, 0.055], + [72.188, 0.131, 0.128], + [72.792, 0.456, 0.453], + [72.051, 0.069, 0.061], + [72.018, 0.212, 0.208], + [72.258, 0.195, 0.205], + [73.096, 1.042, 0.987], + [72.477, 0.468, 0.466], + [72.518, 0.48, 0.459], + [72.452, 0.104, 0.099], + [72.277, 0.131, 0.127], + [72.07, 0.101, 0.103], + [72.332, 0.1, 0.099], + [71.92, 0.122, 0.129], + [72.157, 0.11, 0.109], + [71.948, 0.103, 0.099], + [72.087, 0.072, 0.072] +] + } + \ No newline at end of file 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 diff --git a/polars-dataframe/results/20260812/c6a.metal.json b/polars-dataframe/results/20260812/c6a.metal.json new file mode 100644 index 0000000000..bc40d0f848 --- /dev/null +++ b/polars-dataframe/results/20260812/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (DataFrame)", + "date": "2026-08-12", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","dataframe","in-memory"], + "load_time": 4, + "data_size": 58970980436, + "concurrent_qps": 4.877, + "concurrent_error_ratio": 0, + "result": [ + [58.178, 0.003, 0.003], + [58.113, 0.008, 0.01], + [58.298, 0.008, 0.009], + [58.258, 0.015, 0.015], + [58.3, 0.121, 0.118], + [58.283, 0.213, 0.21], + [58.294, 0.011, 0.012], + [58.201, 0.028, 0.028], + [58.709, 0.49, 0.478], + [58.583, 0.441, 0.434], + [58.226, 0.102, 0.098], + [58.331, 0.115, 0.11], + [58.629, 0.198, 0.197], + [58.753, 0.465, 0.46], + [58.563, 0.223, 0.22], + [58.512, 0.193, 0.193], + [58.931, 0.692, 0.68], + [59.016, 0.719, 0.695], + [59.234, 1.181, 1.143], + [58.141, 0.014, 0.015], + [58.27, 0.107, 0.109], + [58.299, 0.168, 0.167], + [58.645, 0.328, 0.31], + [58.529, 0.261, 0.3], + [58.362, 0.049, 0.051], + [58.123, 0.05, 0.052], + [58.307, 0.102, 0.093], + [58.62, 0.249, 0.253], + [59.123, 0.952, 0.954], + [58.311, 0.049, 0.048], + [58.611, 0.23, 0.24], + [58.59, 0.279, 0.274], + [59.936, 1.46, 1.423], + [59.169, 0.863, 0.848], + [59.158, 0.947, 0.969], + [58.506, 0.159, 0.162], + [58.243, 0.093, 0.091], + [58.352, 0.081, 0.07], + [58.435, 0.046, 0.044], + [58.291, 0.094, 0.079], + [58.317, 0.071, 0.069], + [58.264, 0.056, 0.053], + [58.153, 0.043, 0.043] +] + } + \ No newline at end of file