Skip to content

Index perf - #2

Merged
gwct merged 2 commits into
mainfrom
index-perf
Aug 12, 2026
Merged

Index perf#2
gwct merged 2 commits into
mainfrom
index-perf

Conversation

@gwct

@gwct gwct commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator
  • Speeds up mafutils index ~2× end-to-end by replacing the per-line TextIOWrapper.tell() call with binary-mode reading plus a simple byte counter for none/gz input. Profiling on a 1.5GB real MAF showed tell() was ~60% of runtime, it must snapshot the incremental UTF-8 decoder state to build a seekable cookie, costing ~4.6× more than the readline() beside it. Scan-only throughput improves 8.6× (11.89s → 1.38s); end-to-end index goes 23.82s → 11.63s. Output is byte-identical, verified across all three compression types on both fixtures and 1.5GB of real production data. bgzip deliberately stays on the tell() path, since its virtual offsets aren't additive. Also drops a redundant join→split round-trip and per-line strip() on sequence lines.

  • Adds a --version flag to the CLI, accepting --version, -version, -v, and -V. Reads from installed package metadata via importlib.metadata and exposes version on the mafutils package.

  • New tests (tests/test_cli.py): all four version spellings, plus regressions guarding that -version isn't mis-parsed as grouped short flags and that the new top-level callback doesn't break subcommand dispatch. Full suite: 72 passing.

@gwct
gwct merged commit 9017aa9 into main Aug 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant