Skip to content
Skills Library
Programming · Testing

performance-testing

/performance-testing

Benchmark code so the numbers mean something: warm up, fix inputs, report variance, and gate regressions in CI. Use when measuring the speed of a function or comparing two implementations.

Repository
AI-SKILLS ↗
Licence
MIT
Last repository change
05.09.2026

Assessment and security

90/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 05.09.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Benchmark code so the numbers mean something: warm up, fix inputs, report variance, and gate regressions in CI. Use when measuring the speed of a function or comparing two implementations.

Original author description

Benchmark code so the numbers mean something: warm up, fix inputs, report variance, and gate regressions in CI. Use when measuring the speed of a function or comparing two implementations.

How it works

  1. Method
  2. Signals
  3. Boundaries
Original SKILL.md headings · 54 lines, 440 words
SKILL.md preview
---
name: performance-testing
description: "Benchmark code so the numbers mean something: warm up, fix inputs, report variance, and gate regressions in CI. Use when measuring the speed of a function or comparing two implementations."
---

# Performance testing

A benchmark that reports one number from one run is worse than no benchmark:
it invites decisions made from noise. Honest measurement accounts for warmup,
background variance, and input shape, and it states its uncertainty. Skip the
method and you end up optimizing against your cache state and a neighbor's
cron job rather than the code.

## Method

1. **Warm up before you measure.** The first iterations pay for JIT
   compilation, cold caches, and lazy allocation. Run a discard loop until
   timings stabilize, then start recording. Established harnesses like JMH,
   pytest-benchmark, and Criterion do this for you; respect it.
2. **Fix the input and the input size.** Benchmark a known, committed dataset
   at a stated size, not whatever happened to be in memory. Report the size
   with the result: "parse, 10k rows" means something, "parse is fast" does
   not.
3. **Run many iterations and report the distribution.** Collect hundreds of
   samples and report median plus a spread such as p95 and standard
   deviation. The mean alone hides a bimodal result where half the runs hit a
   slow path.
4. **Quiet the machine.** Close other load, pin to a core, and disable
   frequency scaling or turbo boost where you can. On a laptop on battery the
   numbers are fiction. `hyperfine` and `taskset` help isolate a run.
5. **Compare against a committed baseline, not a memory.** Store last known
   timings in the repo and diff against them. "20% slower than the baseline
   we committed" is actionable; "feels slower than last week" is not.
6. **Gate regressions in CI with a threshold and repeats.** Fail the build
   when the median exceeds the baseline by a set margin, say 10%, confirmed
   over repeated runs so a single noisy sample does not block a merge. Track
   the baseline as it legitimately improves.
7. **Profile to find the cost, benchmark to confirm the fix.** A profiler
   like perf, py-spy, or a flame graph tells you where time goes; the
   benchmark proves the change actually moved the median, not just your
   intuition.

## Signals

- Do two runs of the unchanged benchmark land within your CI threshold of
  each other? If not, the harness is too noisy to gate on.
- Does the report name the input size, iteration count, and a spread, not
  just a single millisecond figure?
- When the gate fails, can you point to the committed baseline it regressed
  against?

## Boundaries

This covers micro and function-level benchmarks on one machine. Multi-user
capacity, ramp profiles, and saturation belong to load-testing. Whether a
given speed is fast enough is a product call against a latency budget, not
something a benchmark decides.

Versions

RepositoryScoreLicence
This page · Amey-Thakur/AI-SKILLS90MIT
proffesor-for-testing/agentic-qe100MIT
DaveSkender/Stock.Indicators100Apache-2.0
foryourhealth111-pixel/Vibe-Skills100Apache-2.0
petrkindlmann/qa-skills100MIT
nimadorostkar/Claude-Skills-collection100MIT
MARUCIE/openclaw-foundry100MIT
jacob-balslev/skill-graph100Apache-2.0
kid-sid/codex-spellbook100MIT

Database snapshot: 13.11.2026 · package version a5a9f80a1600 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100testing-quality
    Use when selecting, writing, debugging, or reviewing tests and quality gates for application changes or regressions.
  • 100np-engineering-performance-baseline
    Establish a reproducible application performance baseline. Use when a team needs a meaningful baseline before optimization.
  • 100code-migration
    Move code from one implementation to another function by function, tests first and code second, and check two implementations of one app for parity, with jscpd --compare as the progress measure and a coverage map binding each function to its tests. Use when porting a library or…
  • 100benchmark-suite-creator
    Create benchmark suite creator operations. Auto-activating skill for Performance Testing. Triggers on: benchmark suite creator, benchmark suite creator Part of the Performance Testing skill category. Use when working with benchmark suite creator functionality. Trigger with…
  • 100benchmark-checklist
    Check performance measurements before you report or use them. Use for benchmarks, measured speedups, regressions, or performance-based choices.

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.