Files
Florian Valeye 167162e8f6 chore(cargo): unify cargo profiles with dev, ci and release for Python and Rust
Profiles for different use cases:
- dev: Fast local development with good debug experience (Cargo defaults)
- test: test builds with minimal debug info to save disk/RAM (custom)
- release: Production Rust crates - maximum performance (Cargo defaults)
- bench: For benchmarking with flamegraphs (cargo bench)
- profiling: For performance profiling with release opts + debug info
- ci: CI/CD optimized - fast builds, release-like performance
- python-release: Python wheel builds - portable, reproducible (PyPI releases)

Signed-off-by: Florian Valeye <florian.valeye@gmail.com>
2025-11-11 06:43:14 -08:00

45 lines
1.1 KiB
YAML

name: python_benchmark
# This is separate from the python_build so that it doesn't need to run on the merge group
on:
push:
branches: [main]
defaults:
run:
working-directory: ./python
jobs:
benchmark:
name: Python Benchmark
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup Environment
uses: ./.github/actions/setup-env
- name: Build deltalake in release mode
run: |
PROFILE=ci make develop
# Download previous benchmark result from cache (if exists)
- name: Download previous benchmark data
uses: actions/cache@v4
with:
path: ./cache
key: ${{ runner.os }}-benchmark
- name: Run benchmark
run: |
uv run pytest tests/test_benchmark.py -m '(benchmark and pyarrow)' --benchmark-json output.json
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
tool: "pytest"
output-file-path: python/output.json
external-data-json-path: ./cache/benchmark-data.json
fail-on-alert: true