본문으로 건너뛰기
cccskills
무료GitHub에 공개

add-benchmarks

Design or extend DataFusion benchmarks using SQL where practical. Select representative workload variations, keep unrelated processing lightweight, and integrate runs with bench.sh so measurements reflect useful execution paths and remain practical to run.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Guidelines for designing or extending DataFusion benchmarks.

설치 방법 보기

이럴 때 유용합니다

  • Add SQL benchmarks for DataFusion operators
  • Select representative input sizes and filter conditions
  • Reduce unrelated processing overhead in measurements
  • Integrate benchmark preparation and execution with bench.sh

포함된 파일(1)

  • SKILL.md2.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Benchmark Design

Follow these guidelines when designing or adding a new benchmark.

Design principles

Use the highest-level interface

Use the highest-level interface possible, preferably SQL, while keeping the work around the operator being measured as cheap as possible. When benchmarking a function, exercise its evaluation path instead of benchmarking internal utility functions in isolation.

This makes benchmarks easier to maintain and helps assess how much an optimization matters to end-to-end runtime. It also helps avoid spending time optimizing code that accounts for only a small fraction of the total runtime.

Practical criteria for choosing SQL or Rust benchmarks: Try implementing the benchmark in SQL first. If a Rust microbenchmark still seems like a better fit, use Criterion.

Vary the key workload axes

First identify the key axes to vary. For example, for a join benchmark:

  • Input size on each side.
  • Join-filter selectivity.
  • ...

Then choose benchmark cases that exercise representative variations. Full combinatorial coverage is unnecessary; focus on typical workloads that reflect real use cases.

When adding benchmark queries, simply tag each query with the decision made for every axis. For example, for a join benchmark with input sizes/filter selectivity to tune:

-- Q1: Small left input, large right input; 0.1% of pairs match.
SELECT *
FROM generate_series(1, 100) AS l
JOIN generate_series(1, 100000) AS r
  ON (l.value + r.value) % 1000 = 0;

-- Q2: Medium inputs on both sides; no filter.
SELECT *
FROM generate_series(1, 1000) AS l
CROSS JOIN generate_series(1, 1000) AS r;

SQL benchmarks

For implementation details, see the SQL benchmark README.

  1. Keep other operators cheap.

    When a SQL benchmark targets a specific operator, keep the work done by other operators as lightweight as possible. For example, use a data source such as generate_series() instead of a Parquet scan so scan overhead does not dominate the measurement. See the nlj benchmark for examples.

  2. Integrate with the top-level benchmark script.

    Ensure the benchmark can be prepared and run through bench.sh:

    # Run from the benchmarks directory.
    
    # Generate any required dataset.
    ./bench.sh data new_bench
    
    # Run the benchmark.
    ./bench.sh run new_bench
    
  3. Keep query runtimes practical.

    Tune the workload so each query takes roughly a few seconds per execution. This helps reduce the relative impact of timing noise while keeping the suite practical to run.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Audit one datafusion-spark function against Apache Spark 4.2.0. Compare source code, accepted types, and edge cases, verify expected results with PySpark, then fix differences and record remaining gaps as issues and disabled tests.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Auditing a function for Spark compatibility
  • Checking NULL, overflow, and ANSI mode behavior
  • Finding missing SQL test coverage
apache/datafusion9.5천2026년 10월 19일 업데이트

Guide changes and reviews in datafusion-ffi, which connects separately compiled libraries. Check binary compatibility, memory ownership, and method coverage, and choose unit and cross-library tests for new wrappers, trait extensions, or codec changes.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Add FFI wrappers for DataFusion traits
  • Check that default method overrides cross the FFI boundary
  • Review binary compatibility and memory ownership in pull requests
apache/datafusion9.5천2026년 10월 19일 업데이트

pr_review

무료

Review Apache DataFusion pull requests using the project's review guide. Gather the proposed changes, discussion, and automated check results, or apply the same review criteria to your own changes before submitting a pull request.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing an Apache DataFusion pull request
  • Checking your changes before submitting a pull request
  • Reviewing changes alongside discussion and automated check results
apache/datafusion9.5천2026년 10월 19일 업데이트

apache의 스킬 모두 보기

이 스킬의 문제 신고