Django Filter Benchmark
saleor/saleor
Benchmarks Django ORM filters in Saleor by generating bulk data, extracting the SQL and running EXPLAIN ANALYZE to check index usage.
Iterate on Vortex vx-bench query performance with benchmark comparisons, engine-specific benchmark flags, RUSTLOG/tracing/metrics/explain output, and Samply profiles.
$ npx skills add vortex-data/vortex --skill bench-performance -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vortex-data/vortex bench-performance --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/vortex-data/vortex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/bench-performance .claude/skills/bench-performance && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "bench-performance" agent skill from https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performance into .claude/skills/bench-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bench-performance", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performanceType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vortex-data/vortex --skill bench-performance -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vortex-data/vortex bench-performance --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vortex-data/vortex.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/bench-performance .agents/skills/bench-performance && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bench-performance" agent skill from https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performance into .agents/skills/bench-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bench-performance", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vortex-data/vortex --skill bench-performance -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vortex-data/vortex bench-performance --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vortex-data/vortex.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/bench-performance .cursor/skills/bench-performance && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bench-performance" agent skill from https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performance into .cursor/skills/bench-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bench-performance", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vortex-data/vortex.git --path .agents/skills/bench-performance--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vortex-data/vortex --skill bench-performance -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vortex-data/vortex bench-performance --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vortex-data/vortex.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/bench-performance .gemini/skills/bench-performance && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bench-performance" agent skill from https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performance into .gemini/skills/bench-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bench-performance", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vortex-data/vortex bench-performanceInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vortex-data/vortex --skill bench-performance -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vortex-data/vortex.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/bench-performance .github/skills/bench-performance && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bench-performance" agent skill from https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performance into .github/skills/bench-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bench-performance", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vortex-data/vortex --skill bench-performance -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vortex-data/vortex bench-performance --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vortex-data/vortex.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/bench-performance .opencode/skills/bench-performance && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bench-performance" agent skill from https://github.com/vortex-data/vortex/tree/develop/.agents/skills/bench-performance into .opencode/skills/bench-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bench-performance", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bench-performanceIterate on Vortex vx-bench query performance with benchmark comparisons, engine-specific benchmark flags, RUSTLOG/tracing/metrics/explain output, and Samply profiles.
Bench Performance is an agent skill from vortex-data/vortex. Iterate on Vortex vx-bench query performance with benchmark comparisons, engine-specific benchmark flags, RUSTLOG/tracing/metrics/explain output, and Samply profiles. Use when optimizing or investigating a vx-bench query, benchmark regression, engine/format comparison, or Vortex benchmark hotspot.
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `agents/openai.yaml`, `scripts/compare_gh_json.py` and `scripts/compare_metrics.py`).
It sits in Databases, covering Query optimization. It works with Rust and Python. The repository describes itself as: An extensible, state-of-the-art framework for columnar compression, and the fastest FOSS columnar file format. Formerly at @spiraldb, now an Incubation Stage project at… The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ca68232. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3gitcargouvrgFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Bench Performance loads about 5.1k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 2,049 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from vortex-data/vortex at commit ca68232, republished under its Apache-2.0 licence (© vortex-data). 2,049 words, ~5,105 tokens.
.claude/skills/bench-performance/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Use this skill for Vortex benchmark performance work driven by vx-bench or the direct benchmark
binaries. Start with comparable benchmark evidence, then add diagnostics (RUST_LOG, explain,
metrics, tracing), then profile with Samply when the slow target is clear.
This skill complements $samply: use $samply for profile recording, Firefox-profiler JSON
schema, symbolication, and stack summaries. This skill decides when to benchmark, what engine flags
to use, what logs/metrics to collect, and how to iterate without losing the comparison.
Emit evidence as soon as it exists:
Do not wait for a deep code read before showing benchmark comparisons or first stack summaries.
Capture branch and dirty state:
git status --short
git branch --show-current
git diff --stat develop...HEADIdentify the exact benchmark target:
tpch, tpcds, clickbench, fineweb, gh-archive, polarsignals,
public-bi, or statpopgen;-q <query>;datafusion:vortex versus datafusion:parquet;Run a small comparable benchmark through vx-bench:
FEATURE_TOGGLE=1 UV_CACHE_DIR=/private/tmp/vortex-uv-cache \
uv run --project bench-orchestrator vx-bench run <benchmark> \
-e <engine> \
-f <baseline-format>,<candidate-format> \
-q <query> \
-i 3 \
-l <label> \
--output /private/tmp/<label>.jsonl \
--verboseUse --no-build only after the relevant binary has been rebuilt from current sources.
Do not run benchmark measurements in parallel with other benchmark measurements. Parallel shell work is useful for source inspection, but competing benchmark binaries distort medians and create multi-second outliers that look like engine regressions.
If the comparison is surprising or too noisy, rerun the same target with more iterations before profiling. Keep the query/engine/format/env identical.
Use direct benchmark binaries for diagnostics that vx-bench does not expose. Build binaries
with the orchestrator or directly:
cargo build -p datafusion-bench --profile release_debug --features unstable_encodings
cargo build -p duckdb-bench --profile release_debug --features unstable_encodings
cargo build -p lance-bench --profile release_debugCollect only the diagnostic needed next: RUST_LOG, --explain, --show-metrics, --tracing,
memory, system tools, or Samply. Report the result, then inspect code near the evidence.
Make one scoped change, rebuild the narrow binary, rerun the same benchmark command, and compare against the previous run/output before adding broader checks.
RUST_LOG wins over --verbose. Without RUST_LOG, --verbose raises default logging to
TRACE; otherwise the env filter controls output.
Useful starting filters:
RUST_LOG=info
RUST_LOG=vortex_datafusion=debug,vortex_layout=debug,vortex_file=debug,datafusion=warn
RUST_LOG=vortex_datafusion::persistent::opener=trace,vortex_layout::layouts::zoned=trace,info--tracing attaches a Perfetto layer and writes trace.json in the current directory.
Runtime env toggles are useful for fast iteration because they let you compare behavior without
recompiling. Use the same toggles on the benchmark, diagnostics, and Samply commands for a given
run. Compare with and without a toggle as separate labeled runs, and discover available toggles
from source (rg -n "std::env::var|env::var" is a good starting point).
vx-bench normalizes the common path, but direct binaries differ. Check source or --help before
assuming a flag exists.
target/release_debug/datafusion-benchSource: benchmarks/datafusion-bench/src/main.rs.
Supported diagnostics:
--formats parquet,vortex,vortex-compact,lance,arrow;--queries 6, --exclude-queries 1,2, --iterations N, --display-format gh-json;--hide-progress-bar, -o /private/tmp/out.jsonl, --ingest-jsonl /private/tmp/out.ingest.jsonl;--verbose, --tracing, --track-memory, --runner NAME, --opt key=value;--explain prints query plans instead of timing;--show-metrics prints Vortex execution-plan metrics after a timed run.Declared but currently not useful unless the source changes: --threads, --emit-plan, and
--export-spans are parsed but not wired into the execution path.
Examples:
FEATURE_TOGGLE=1 RUST_LOG=vortex_datafusion=debug,vortex_layout=debug,datafusion=warn \
target/release_debug/datafusion-bench tpch \
--display-format gh-json --iterations 5 --hide-progress-bar \
--formats <format> --queries <query> --show-metrics \
-o /private/tmp/<label>.jsonlFEATURE_TOGGLE=1 target/release_debug/datafusion-bench tpch \
--explain --formats <format> --queries <query>target/release_debug/duckdb-benchSource: benchmarks/duckdb-bench/src/main.rs.
Supported diagnostics:
--formats parquet,vortex,vortex-compact,duckdb;--delete-duckdb-database rebuilds the per-format DuckDB database;--threads N sets DuckDB's threads config;--reuse keeps one DuckDB connection across iterations, useful with Samply to keep work on the
same threads;--queries, --exclude-queries, --iterations, --display-format,
--hide-progress-bar, -o, --ingest-jsonl, --track-memory, --verbose, --tracing,
--runner, --opt, --explain.Example:
RUST_LOG=duckdb_bench=trace,vortex_duckdb=debug,info \
target/release_debug/duckdb-bench tpch \
--display-format gh-json --iterations 5 --hide-progress-bar \
--formats <baseline-format>,<candidate-format> --queries <query> --threads 8 --reuse \
-o /private/tmp/<label>.jsonltarget/release_debug/lance-benchSource: benchmarks/lance-bench/src/main.rs.
Important differences:
--formats: the binary always generates/registers Lance data and reports datafusion:lance;--explain or --show-metrics path today;--queries, --exclude-queries, --iterations, --display-format,
--hide-progress-bar, -o, --ingest-jsonl, --track-memory, --verbose, --tracing,
--runner, --opt;--threads is parsed but currently not wired into the Lance/DataFusion session.Example:
RUST_LOG=lance_bench=debug,datafusion=warn \
target/release_debug/lance-bench tpch \
--display-format gh-json --iterations 5 --hide-progress-bar \
--queries <query> \
-o /private/tmp/<label>.jsonlFor direct gh-json output, use the bundled helper:
python3 .agents/skills/bench-performance/scripts/compare_gh_json.py \
/private/tmp/<label>.jsonl \
--baseline <engine>:<baseline-format>It ignores non-JSON log lines, groups by benchmark/query target, reports milliseconds, min/median/max, and ratios against the selected baseline target or the first target in each query.
When a run emits Vortex mask-style debug lines, summarize them before reading more code. This includes mask-debug rows and pruning rows with the same coordinate fields. These logs are useful for deciding whether a hot stack is expensive per row, called over too many rows, or repeated over the same coordinates:
python3 .agents/skills/bench-performance/scripts/summarize_mask_debug.py \
/private/tmp/<label>.log \
--message-regex 'filter|conjunct|flat' \
--duplicatesThe output reports batch counts, zero-output percentage, total input/output rows, density, batch size quantiles, elapsed totals when present, the largest batches, and duplicate coordinate masks. If a low-selectivity filter still shows very large input batches late in the pipeline, compare this with the Samply timeline: a few huge all-false batches can explain idle workers even when total row work looks reasonable.
For conjunct scheduling logs, aggregate compute rows per predicate. This handles candidate conjunct rows and baseline pruning/filter conjunct rows when the logs include comparable fields:
python3 .agents/skills/bench-performance/scripts/summarize_conjunct_debug.py \
/private/tmp/<label>.logUse this when checking whether a pushed-down or shared mask is actually evaluated once, or whether each projected field is driving the same conjunct work again.
When investigating stream scheduling, enable the relevant flow trace and summarize it immediately:
<FLOW_TRACE_ENV>=1 RUST_LOG=<flow-target>=debug,datafusion=warn \
target/<profile-dir>/datafusion-bench clickbench \
--display-format gh-json --iterations 1 --hide-progress-bar \
--formats vortex --queries <query> \
-o /private/tmp/<label>.jsonl > /private/tmp/<label>.log 2>&1
python3 .agents/skills/bench-performance/scripts/summarize_flow_tracing.py \
/private/tmp/<label>.logRead the summary as a scheduling picture:
filter pushdown failed with no filtered flat events means the plan is applying a sparse mask
after full value/projection work.dict/struct/project pushdown failed shows which row-preserving node blocked mask pushdown.materialised mask read_all done counts full mask barriers and their true counts.filtered flat mask read_all done or filtered flat incremental mask ready counts leaf mask
consumption; compare sums to detect repeated mask use across projected fields.aligned producer waits by label separates backpressure in filter, struct, and conjunct
zips. High cumulative send wait means producer tasks are ready but the aligned consumer is
waiting on another child or on downstream demand.A hot sampled stack does not by itself say whether the operation is intrinsically slow, called too many times, or waiting on contention. Before changing code, classify it:
When reading Samply's timeline view, look at the shape of CPU occupancy, not only the hottest function names:
with_capacity, RawVec, reserve, or allocator symbols appear
throughout the whole trace, treat that as allocation churn and missing buffer reuse. Look for
per-batch scratch allocation, repeated materialization, unbounded Vec creation, and places
where reusable buffers or capacity-preserving paths would avoid rebuilding the same memory.For Vortex/DataFusion scan I/O, prefer --show-metrics before OS tracing:
target/release_debug/datafusion-bench <benchmark> \
--display-format gh-json --iterations 1 --hide-progress-bar \
--formats <format> --queries <query> --show-metrics \
-o /private/tmp/<baseline-label>.jsonl \
> /private/tmp/<baseline-label>.metrics.txt 2>&1
FEATURE_TOGGLE=1 target/release_debug/datafusion-bench <benchmark> \
--display-format gh-json --iterations 1 --hide-progress-bar \
--formats <format> --queries <query> --show-metrics \
-o /private/tmp/<candidate-label>.jsonl \
> /private/tmp/<candidate-label>.metrics.txt 2>&1
python3 .agents/skills/bench-performance/scripts/compare_metrics.py \
/private/tmp/<baseline-label>.metrics.txt \
/private/tmp/<candidate-label>.metrics.txt \
--metrics vortex.io.read.duration_count,vortex.io.read.total_size,vortex.file.segments.cache.misses,io.requests.individual,io.requests.coalesced,time_elapsed_scanning_total,vortex.io.read.duration_maxIf the candidate has far more reads, bytes, or cache misses than the baseline, treat the hot I/O stack as repeated work first. If counts and bytes are similar but duration grows, investigate per-operation latency and contention.
Use logs when metrics are missing. Add narrow trace points around the suspected operation and log:
call count, requested byte range, coalesced range, segment id, row range, elapsed time, and whether
the call hit/missed a cache. Keep logs behind existing tracing levels and run with a focused
RUST_LOG filter.
When comparing two scan designs, aggregate timings can hide whether the same work ran over the same rows. Add temporary trace/debug fields that make each compute event joinable:
Be careful with multi-file benchmarks: row_start=0..N is only meaningful with a file label. Be
careful with nested layouts too: child plans may log local coordinates unless the diagnostic uses
the scoped demand, split metadata, or another explicit root-offset source. If two paths partition
the same file differently, identical (file, row_range) keys may not exist; compare per-conjunct
input/output row counts first, then add a union-level dump only if exact row-set equality is still
unclear.
Prefer diagnostic logs over changing public batch types. Useful log points are final baseline split projection, candidate mask/filter nodes, and filtered candidate leaf projection nodes. For each batch-like event, emit the input coordinate window plus the post-mask survivor summary/hash; that lets you compare exact row sets even when physical batch boundaries differ. Avoid logging every unfiltered leaf by default: nested layouts such as dictionary values may live in a different row space and can drown out the scan-coordinate signal.
Profile only after the benchmark identifies a slow target. Prefer direct binary commands so the profile contains only the target engine:
FEATURE_TOGGLE=1 samply record --save-only --unstable-presymbolicate --rate 1000 \
--output /private/tmp/<label>.profile.json.gz \
-- target/release_debug/datafusion-bench <benchmark> \
--display-format gh-json --iterations 500 --hide-progress-bar \
--formats <format> --queries <query>Put environment assignments before samply record; the profiled command after -- should be the
locally built benchmark binary, not a system helper. On macOS in Codex, Unknown(1100) from
samply record usually means sandboxed profiling was blocked, so rerun the same profile command
with escalated permissions. See the $samply skill for the detailed failure modes.
DuckDB profiling usually needs --reuse:
samply record --save-only --unstable-presymbolicate --rate 1000 \
--output /private/tmp/<label>.profile.json.gz \
-- target/release_debug/duckdb-bench <benchmark> \
--display-format gh-json --iterations 500 --hide-progress-bar \
--formats <format> --queries <query> --reuseImmediately summarize with $samply's script:
python3 .agents/skills/samply/scripts/profile_summary.py \
/private/tmp/<label>.profile.json.gz \
--binary target/release_debug/datafusion-bench \
--symbolicate --weight-mode cpu \
--top 12 --threads 2 --stacks 4 --stack-depth 10After the first stack summary, ask what would distinguish count from latency. Examples:
Do not infer “the function is slow” from samples until operation counts have been checked.
Use system tools only after benchmark metrics/logs cannot answer the question. They often require Terminal/Developer Tools permissions or root privileges.
sample <pid-or-name> 10 1 -file /private/tmp/sample.txt: quick stack sample. Easier than
Samply, less structured.spindump <pid-or-name> 10 10 -file /private/tmp/spindump.txt or spindump ... -json: system
call-tree sample including wait states; useful for contention/scheduler questions.fs_usage -w -f filesys -t 5 datafusion-bench: filesystem syscall stream. Useful for seeing
repeated opens/reads by process name. Can be noisy and permission-sensitive.iotop -C -P 1 10: system-wide I/O pressure over time. Good for “is this actually disk-bound?”,
weak for per-call attribution.dtrace, opensnoop, execsnoop: potentially useful on macOS, but SIP/sandbox permissions can
make them unavailable. If they fail with permission errors, fall back to benchmark metrics and
explicit tracing logs.xctrace: command-line Instruments runner, but requires full Xcode, not only Command Line Tools.
If unavailable, note that and use Samply/spindump/logs.object_store::local::LocalFileSystem::get_opts / blocking-pool stacks: inspect file IO,
partitioning, segment reads, and cache behavior.arrow_ord::cmp::apply_op or DataFusion expressions: inspect pushed predicates and whether
Vortex pushdown failed.vortex_fastlanes, bitpacking): inspect encoding choice, projection,
mask selectivity, and repeated decode.Mask, BitBufferMut, or materialized-mask stacks: inspect filter pipeline, CSE, mask
sharing, zone pruning, and whether masks are computed more than once.Include:
© vortex-data, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in .agents/skills/bench-performance of vortex-data/vortex.
Open the folder on GitHubat commit ca68232
Bench Performance next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bench Performance this skillvortex-data/vortex | 3.2k | — | ~5.1k | Automated safety check: Pass | Apache-2.0 | |
| Django Filter Benchmarksaleor/saleor | 23k | — | ~2.3k | Automated safety check: Pass | BSD-3-Clause | |
| Qdrant Vector SearchOrchestra-Research/AI-Research-SKILLs | 13k | 5 repos | ~3.4k | Automated safety check: Pass | MIT | |
| Veloxdb Scalable Performanceveloxbase/veloxdb | 646 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Paro Optimizerzunor/paro | 105 | — | ~979 | Automated safety check: Pass | Apache-2.0 | |
| BigQuery Slot and Cost Optimizergoogle/skills | 21k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 |
saleor/saleor
Benchmarks Django ORM filters in Saleor by generating bulk data, extracting the SQL and running EXPLAIN ANALYZE to check index usage.
Orchestra-Research/AI-Research-SKILLs
Explains how to run Qdrant, a Rust vector database, for RAG and semantic search, covering collections, points, distance metrics and filtered or batched queries.
veloxbase/veloxdb
Guides scalability and performance work for VeloxDB's Tauri + Rust PostgreSQL backend and React + TanStack frontend.
zunor/paro
Design, refactor and diagnose Paro's staged optimizer, using EXPLAIN COMPILE for planning and EXPLAIN ANALYZE for execution.
google/skills
Analyzes BigQuery slot use, query costs and execution bottlenecks from INFORMATION_SCHEMA to diagnose slow queries, slot contention and unpartitioned scans.
ancoleman/ai-design-components
Relational database implementation across Python, Rust, Go, and TypeScript.
vortex-data/vortex
Analyze Vortex GitHub Actions CI failures. An agent skill from vortex-data/vortex.
vortex-data/vortex
Analyze Samply Firefox-profiler output, record focused profiles, summarize hot threads/stacks, inspect symbolication, and compare profile evidence before and after a performance change.
Categories
Iterate on Vortex vx-bench query performance with benchmark comparisons, engine-specific benchmark flags, RUSTLOG/tracing/metrics/explain output, and Samply profiles. Bench Performance is an agent skill from vortex-data/vortex. Iterate on Vortex vx-bench query performance with benchmark comparisons, engine-specific benchmark flags, RUSTLOG/tracing/metrics/explain output, and Samply profiles.
Bench Performance fits situations like: investigating a vx-bench query; benchmark regression; engine/format comparison; vortex benchmark hotspot.
Run `npx skills add vortex-data/vortex --skill bench-performance -a claude-code`. Or copy the skill folder (.agents/skills/bench-performance in vortex-data/vortex) into .claude/skills/bench-performance in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vortex-data/vortex --skill bench-performance -a codex`. Or copy the skill folder (.agents/skills/bench-performance in vortex-data/vortex) into .agents/skills/bench-performance in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vortex-data/vortex --skill bench-performance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bench-performance, .gemini/skills/bench-performance, .github/skills/bench-performance and .opencode/skills/bench-performance in your project.
Going by SKILL.md and its folder, Bench Performance needs Python for the scripts in its folder and the command-line tools its instructions call (python3, git, cargo, uv and rg). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git and uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Bench Performance is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Bench Performance: Django Filter Benchmark (saleor/saleor, 23k stars), Qdrant Vector Search (Orchestra-Research/AI-Research-SKILLs, 13k stars), Veloxdb Scalable Performance (veloxbase/veloxdb, 646 stars) and Paro Optimizer (zunor/paro, 105 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vortex-data (a GitHub organization) maintains it in vortex-data/vortex, which has 3,248 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 8, 2026.
Source: vortex-data/vortex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.