slowbench
RetrievalInferenceEvalsAgentsFindingsSeriesBenchmarksArchive

Reference

Benchmarks

Every measurement on this site, in one place. Each table links to the post that produced it, where the setup, the caveats and what was inferred rather than measured are written down.

Tables
7
Rows
27

Reranker comparison — Pass@k, MRR, wall clock

42 Korean issue-title queries · hybrid dense+BM25 index · top-50 candidates reranked

RerankerPass@1Pass@5Pass@10MRRWall clock
none26.2%45.2%47.6%0.33333s
jina-reranker-v1-turbo-en23.8%42.9%47.6%0.32654s
jina-reranker-v2-multilingual26.2%42.9%47.6%0.330282s
bge-reranker-v2-m328.6%42.9%47.6%0.352514s

Pass@10 is identical in all four runs. Reranking reorders a candidate set; it cannot add to it.

Source · Reranking cannot find what retrieval missed →

Embedding models — Korean queries against English-identifier code

56 issue titles · same corpus, chunking and binary · random guessing lands near 2%

ModelPass@1Pass@10MRRIndex time
embeddinggemma-q432.1%42.9%0.356656s
multilingual-e5-small26.8%42.9%0.332261s
paraphrase-minilm1.8%16.1%0.065—
bge-small3.6%7.1%0.042—
jina-codedid not finish in 19 min———

English-only models do not degrade gracefully; they stop working. Multilingual is necessary but not sufficient — the model must also be trained for retrieval rather than sentence similarity.

Source · Picking an embedding model when the queries and the code are in different languages →

Removing 89 prose documentation files from a code index

42 issue-title queries · same model, chunking and queries · docs were 3% of chunks

MetricWith docsDocs excluded
Pass@19.5%26.2%
Pass@519.0%45.2%
Pass@1035.7%47.6%
MRR0.1420.333

The largest single improvement measured on this corpus came from deleting 3% of it, not from changing the model.

Source · Three percent of my index was eating the top five results →

Embedding throughput — CPU vs Metal, same model and corpus

1,024 chunks averaging 688 bytes · Apple Silicon

Configurationchunks/s
candle, CPU f323.8
ONNX, CPU int819.8
Metal f16, batch 25620.1
Metal f16, token-sorted, batch 464.6

The GPU lost three times before it won. All three losses were measurement setup, not hardware.

Source · I measured Metal wrong three times before it beat the CPU →

Batch size vs throughput — padding is the cost

same 1,024 chunks every run · token-sorted · Apple Silicon Metal

BatchOrderWall clockchunks/sPadded tokens
4token-sorted15.9s64.6196,688
64token-sorted21.0s48.8204,736
256token-sorted29.9s34.2230,656

Batch 4 beat batch 256 by 1.9x. A large batch pads every sequence to its longest member, and the model is bandwidth-bound at this size. The post also reports the unsorted runs, which show how much of the loss sorting recovers.

Source · Bigger batches made my GPU slower →

Production indexing — ONNX int8 vs Metal f32

one repository, 406 files · retrieval quality identical to three decimals

MetricONNX int8Metal f32
Cold index294s152s
CPU time consumed1,736s7.2s
Pass@1 / Pass@5 / Pass@1026.8 / 42.9 / 42.9identical
MRR0.332identical

The CPU-time row is the one that changed how the machine feels. Wall clock halved; CPU time fell by 99.6%.

Source · I measured Metal wrong three times before it beat the CPU →

A strategy that never reads the input

20-question sample from 117 labelled tickets · only the sampling method changed

SampleStrategyExactRecall
top 20 by repo countno judgement at all95%100%
top 20 by repo countthe actual system79%92%
round-robin, 8 answer shapesno judgement at all15%55%

On the broken sample, answering the same three repositories every time beat the actual system on every column. Fixing the sample dropped that strategy from 95% to 15%.

Source · The baseline that beat my agent was answering the same thing every time →