perf: Reduce memory copy when scanning from Python objects (#20142) #495
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Remote Benchmark | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- 'main' | |
paths: | |
- crates/** | |
pull_request: | |
types: [ labeled ] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.event.label.name == 'needs-bench' }} | |
env: | |
SCALE_FACTOR: '10.0' | |
jobs: | |
main: | |
if: ${{ github.ref == 'refs/heads/main' || github.event.label.name == 'needs-bench' }} | |
runs-on: self-hosted | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Clone Polars-benchmark | |
run: | | |
git clone --depth=1 https://github.com/pola-rs/polars-benchmark.git | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Create virtual environment | |
run: | | |
curl -LsSf https://astral.sh/uv/install.sh | sh | |
uv venv | |
echo "$GITHUB_WORKSPACE/.venv/bin" >> $GITHUB_PATH | |
echo "VIRTUAL_ENV=$GITHUB_WORKSPACE/.venv" >> $GITHUB_ENV | |
- name: Install Python dependencies | |
working-directory: py-polars | |
run: | | |
# Install typing-extensions separately whilst the `--extra-index-url` in `requirements-ci.txt` | |
# doesn't have an up-to-date typing-extensions, see | |
# https://github.com/astral-sh/uv/issues/6028#issuecomment-2287232150 | |
uv pip install -U typing-extensions | |
uv pip install --compile-bytecode -r requirements-dev.txt -r requirements-ci.txt --verbose | |
- name: Install Polars-Benchmark dependencies | |
working-directory: polars-benchmark | |
run: | | |
uv pip install --compile-bytecode -r requirements-polars-only.txt | |
- name: Set up Rust | |
run: rustup show | |
- name: Install Polars release build | |
env: | |
RUSTFLAGS: -C embed-bitcode -D warnings | |
working-directory: py-polars | |
run: | | |
maturin develop --release -- -C codegen-units=8 -C lto=thin -C target-cpu=native | |
- name: Run benchmark | |
working-directory: polars-benchmark | |
run: | | |
"$HOME/py-polars-cache/run-benchmarks.sh" | tee ../py-polars/benchmark-results | |
- name: Cache the Polars build | |
if: ${{ github.ref == 'refs/heads/main' }} | |
working-directory: py-polars | |
run: | | |
"$HOME/py-polars-cache/save_benchmark_data.py" "$PWD/polars" < ./benchmark-results | |
"$HOME/py-polars-cache/cache-build.sh" "$PWD/polars" |