informix-db/.gitignore
Ryan Malloy 90ce035a00 Phase 21: Performance benchmarks (2026.05.04.5)
Adds tests/benchmarks/ with pytest-benchmark coverage of the hot codec
paths and end-to-end SELECT/INSERT/pool/async round-trips. Establishes
a committed baseline.json so PRs can be regression-checked at review
via --benchmark-compare.

* test_codec_perf.py (16): decode/encode_param/parse_tuple_payload
  micro-benchmarks - run without container, suitable for pre-merge CI.
* test_select_perf.py (4): SELECT round-trips - 1-row latency floor,
  10-row, 1k-row full fetch, parameterized.
* test_insert_perf.py (3): single-row INSERT, executemany 100 / 1000.
* test_pool_perf.py (3): cold connect, pool acquire/release, pool
  acquire + query + release.
* test_async_perf.py (2): async round-trip overhead, 10x concurrent.
* baseline.json: committed snapshot, 28 measurements.
* benchmark pytest marker, gated off by default.
* Makefile: bench / bench-codec / bench-save targets;
  test-integration excludes benchmarks for speed.

Headline numbers (dev container loopback):
* decode(int): 181 ns
* parse_tuple 5 cols: 2.87 µs/row
* SELECT 1 round-trip: 177 µs
* Pool acquire+query+release: 295 µs
* Cold connect: 11.2 ms (72x slower than pool)

UTF-8 decode carries no measurable cost vs iso-8859-1 - confirms
Phase 20 didn't regress anything.

Total: 69 unit + 211 integration + 28 benchmark = 308 tests.
2026-05-04 17:21:12 -06:00

62 lines
975 B
Plaintext

# Project-private context (per global CLAUDE.md rule: only add to private repos)
CLAUDE.md
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
.eggs/
.installed.cfg
*.egg
# Virtual environments
.venv/
venv/
env/
.env
.env.*
!.env.example
# uv
.python-version
# IDE / editor
.vscode/
.idea/
*.swp
*.swo
*~
# Test / lint caches
.pytest_cache/
.ruff_cache/
.mypy_cache/
.coverage
.coverage.*
htmlcov/
# OS
.DS_Store
Thumbs.db
# Phase 0 build artifacts (decompiled JDBC, downloaded JARs)
# build/ already excluded by Python pattern above; we keep the directory for spike work
build/jdbc-src/
build/*.jar
# Wireshark / socat captures live IN the repo intentionally — they're spike deliverables.
# The global ~/.gitignore_global excludes *.log; negate that for our captures specifically:
!docs/CAPTURES/
!docs/CAPTURES/*.log
!docs/CAPTURES/*.pcap
!docs/CAPTURES/*.txt
# Java reference client build outputs
*.class
tests/benchmarks/.results/