Benchmarks · Public data · Pinned commits
Measured,
not claimed.
Every number on this page was measured on public repositories at pinned commits, against answer keys we do not control, and ships with its sample size and conditions. The harnesses and every raw run are open, so you can check any of it.
- of the files each fix needed, found
- 0.876of the files each fix needed, found0.610 for the next tool
n = 42 · p = 0.00004 · Aug 2026
- fewer agent output tokens
- 31.6%fewer agent output tokensagainst a bare agent, on Codex
n = 43 · p = <0.0001 · Aug 2026
- the defects CodeScene surfaces
- 2.3xthe defects CodeScene surfacessame files, same review budget
n = 2,770 · p = 0.003 · Aug 2026
- of call edges correct, hand-graded
- 85.7%of call edges correct, hand-graded58.6% for CodeGraph, 9 languages
n = 280 · Aug 2026
01Retrieval
The right files, first time.
On 42 ContextBench instances sealed from all development, get_answer found 0.876 of the files each fix needed. The next tool found 0.610. Graded deterministically, with no LLM judge.
- repowise (get_answer)0.876
- repowise (search_codebase)0.742
- CodeGraph0.610
- Graphify0.546
- code-review-graph0.445
- cocoindex0.361
The split was fixed before any work began. Repowise scores higher on the sealed half than on the half it was developed against.
sealed 0.876 · development 0.810 · n = 42 · p = 0.00004 · Aug 2026
0.876
File coverage, get_answer, on 42 sealed instances
n = 42 · p = 0.00004 · Aug 2026
0.742
search_codebase coverage, from 8.2 files per question: the most coverage per file served
n = 42 · p = 0.021 · Aug 2026
02Agent efficiency
A third less work for your agent.
Across 43 django questions on Codex, agents with Repowise wrote 31.6% fewer output tokens than a bare agent and reached answers in 3.8 tool calls instead of 7.2. Same prompt, fresh index, six arms.
- repowise1,250
- CodeGraph1,383
- Serena1,550
- Graphify1,658
- code-review-graph1,710
- bare agent (control)1,828
n = 43 · p = <0.0001 · Aug 2026 · lower is leaner
Codex
31.6%
n = 43 · p = <0.0001
Claude Code
15.9%
n = 15 · p = 0.035
Local qwen3:8b
47.9%
n = 15 · p = 0.00006
Fewer output tokens on every agent harness measured.
3.8
Tool calls to reach an answer, against a bare agent's 7.2
n = 43 · Aug 2026
37 of 44
Questions where the loop was leaner than the bare agent's
n = 44 · p = <0.0001 · Aug 2026
34.3%
Saved on the harder half of the questions: the more exploring a task needs, the more Repowise saves
n = 22 · Aug 2026
03The code graph
A call graph you can build on.
Checked against the Go and TypeScript compilers' own answer keys, Repowise call edges are 0.976 to 0.995 precise. In 7 of 7 cells, no tool that finds as much of the graph gets more of it right.
- repowise85.7%
- CodeGraph 1.5.058.6%
- tests that reach a file95.7%
- tests to run for a change97.5%
n = 280 · Aug 2026 per tool · 560 rows, every verdict published
0.976 to 0.995
Repowise call-edge precision against the Go and TypeScript compilers
n = 7 · Oct 2026
7 of 7
Compiler-graded cells where no tool beats both our precision and recall
n = 7 · Aug 2026
97.5%
Precision of the inferred list of tests to run for a change
n = 47 · Aug 2026
04Code health
Health scores that find tomorrow's bugs.
Scored at a historical commit and checked against the next six months of bug fixes, Repowise health reaches ROC AUC 0.74 across 21 repositories, 9 languages. Under the same review budget it surfaces 2.3x the defective files CodeScene does.
- repowise0.173
- CodeScene0.074
- repowise0.607
- CodeScene0.462
- repowise2.18x
- CodeScene0.56x
n = 2,770 · p = 0.003 · Aug 2026 · same leakage-free commit
0.74
ROC AUC predicting which files get bug-fixed over the next six months
n = 2,826 · Aug 2026
2.3x
Defects surfaced under a fixed 20%-of-lines review budget, against CodeScene
n = 2,770 · p = 0.003 · Aug 2026
+0.10 AUC
Margin over ranking by recent churn
n = 2,826 · p = <1e-9 · Aug 2026
05Command output
Noisy output, distilled.
repowise distill puts errors first, keeps the exit code, and makes every omission recoverable. A pytest run with 11 failures shrinks by 61% with every failure line kept.
errors first · exit code preserved · every omission recoverable by marker
06Speed and memory
Light enough for a laptop and CI.
Building the call graph, Repowise used the least memory on 35 of 35 repositories: a median of 75 MB against 757 MB for CodeGraph. It has indexed repositories of up to 58,924 files on a single laptop.
- repowise75 MB
- code-review-graph361 MB
- CodeGraph757 MB
- Graphify860 MB
- codebase-memory-mcp1,113 MB
n = 35 · Aug 2026 · 175 cells · three timed runs each · lower is better
35 of 35
Repositories where Repowise used the least memory to build the graph
n = 35 · Aug 2026
58,924 files
Largest repository indexed end to end on one laptop (dotnet/runtime)
n = 1 · Oct 2026
Method
Built to survive a rerun.
When JetBrains reran two token-saving tools on real agent work, an advertised 65% saving measured 8.5% and another came out 7.6% more expensive. Numbers in this category hold up when the method ships with them, so ours does.
- 01
Pre-register
Each question and its expected test is committed before a scored run spends anything.
- 02
Seal a split
Held-out instances stay untouched until the final measurement, then run once.
- 03
Prove every arm is live
Each tool is shown answering before its score counts, so a misconfigured server never reads as a result.
- 04
Publish every row
Sample size, conditions and raw output ship with each number, for every tool in the field.
Tokens, not dollars
Prompt caching ties dollar cost to run order: an arm's position correlated -0.487 with dollar cost. Output tokens are never cached and correlated +0.010, so they are the figure we report.
What it took
471 agent runs for the agent-loop tables and 748 index builds for retrieval, each arm on its own fresh index at the instance's own commit.
Reproduce it
$ git clone https://github.com/repowise-dev/repowise-benchHarnesses, pre-registrations with their commit timestamps, statistical tests and every raw run, kept permanently.
Reproduction guideMeasured against: CodeGraph 1.5.0 · Graphify 0.9.31 · Serena 1.6.2.dev0 · code-review-graph 2.3.7 · codebase-memory-mcp 0.10.8 · cocoindex 2026-08-09
The complete record
Every row we ran.
Every row we ran, including the ones another tool leads, is in the full record below, scoped to the test and the field that produced it. A full Repowise index also builds history, documentation, decisions and health in one pass, so the ledger lists its build time beside graph-only tools too.
| Question | Measured against | Result | Verdict |
|---|---|---|---|
| Finding the right files | CodeGraph, Graphify, code-review-graph, cocoindex | 0.876 sealed-set coverage; 19 wins, 1 loss, 22 ties head to head | Repowise leads |
| Work saved in a real agent loop | Four competing tools and a bare-agent control | 31.6% fewer Codex output tokens; fewest tool calls in the field | Repowise leads |
| Call-graph correctness | Five tools; compiler oracles on Go and TypeScript | No measured tool that finds as much of the graph gets more of it right, in 7 of 7 cells; 85.7% correct in a nine-language hand audit against CodeGraph | Repowise leads |
| How much of the call graph we find | CodeGraph, codebase-memory-mcp, Graphify, code-review-graph | Two tools draw a larger graph on the Go cells; Repowise leads recall on both TypeScript cells | Another tool leads |
| Code health predicts defects | CodeScene on the same files and future bug labels | Repowise leads recall and effort-aware ranking; CodeScene keeps a shorter review list and its business-impact axis | Trade-off |
| Memory to build the call graph | CodeGraph, codebase-memory-mcp, Graphify, code-review-graph | Least memory on 35 of 35 repositories; build speed level with CodeGraph | Repowise leads |
| Full index build time | CodeGraph, Graphify, code-review-graph | A graph-only tool indexes 22x faster; Repowise builds history, docs, decisions and health in the same pass, and updates incrementally after | Another tool leads |
| Documentation and PR review | DeepWiki, Swimm, CodeRabbit, Greptile | Shipped capabilities, with no controlled head-to-head published yet | Not yet measured |
Full tables · 9
Finding the right files6 rows · 4 columns
File coverage on 42 ContextBench instances pinned before any of this work started and kept sealed until the final measurement. Grading is deterministic and no LLM judge is involved.
| Tool | File coverage | Precision | Files served |
|---|---|---|---|
| repowise (get_answer) | 0.876 | 0.087 | 19.2 |
| repowise (search_codebase) | 0.742 | 0.168 | 8.2 |
| CodeGraph | 0.610 | 0.093 | 14.0 |
| Graphify | 0.546 | 0.033 | 34.5 |
| code-review-graph | 0.445 | 0.240 | 5.4 |
| cocoindex | 0.361 | 0.092 | 7.1 |
Scroll the table sideways to see every column.
n = 42 sealed instances (41 for cocoindex, measured 2026-08-09 on the same instances and grading; one instance never answered and is excluded, not scored zero). Head to head against CodeGraph, get_answer wins 19, loses 1, ties 22, sign test p = 0.00004. The pooled 112-instance figure would be 0.835 and is deliberately not quoted: averaging the halves loses the only number that matters, which is how the tool does on instances it has never seen.
What changes in a real agent loop, on Codex6 rows · 7 columns
Every question in django's question set, six arms, byte-identical prompts, each tool's full advertised surface, and a freshly built index on the same pinned commit. Every tool was called on every question, so this is like for like.
| Tool | Agent used it | Output tokens | vs bare agent | Tool calls | Leaner on | p |
|---|---|---|---|---|---|---|
| repowise | 44 / 44 | 1,250 | -31.6% | 3.8 | 37 of 44 | <0.0001 |
| CodeGraph | 44 / 44 | 1,383 | -24.4% | 4.0 | 37 of 44 | <0.0001 |
| Serena | 43 / 43 | 1,550 | -14.8% | 10.1 | 35 of 43 | <0.0001 |
| Graphify | 43 / 43 | 1,658 | -8.9% | 7.4 | 31 of 43 | 0.003 |
| code-review-graph | 43 / 43 | 1,710 | -6.0% | 7.2 | 26 of 43 | 0.046 |
| bare agent (control) | 0 / 44 | 1,828 | baseline | 7.2 | n/a | n/a |
Scroll the table sideways to see every column.
Codex (gpt-5.6-sol) on django/django at one pinned commit. Correcting for testing five tools at once, three reductions are solid and two are marginal. 5 of the 48 questions are missing from every arm equally because the run hit an API usage cap, so the figures are over the 43 questions all six arms completed; because all arms lost the same 5, the paired comparisons are unaffected.
The second proof point, on Claude Code6 rows · 8 columns
The same six arms, the same servers and the same indexes, on a different agent harness. The result depends on the harness as much as on the tools.
| Tool | Tools advertised | Schema cost (chars) | Agent used it | Output tokens | vs bare agent | Leaner on | p |
|---|---|---|---|---|---|---|---|
| repowise | 10 | 17,561 | 15 / 15 | 2,420 | -15.9% | 12 of 15 | 0.035 |
| CodeGraph | 1 | 1,567 | 13 / 15 | 2,540 | -11.7% | 10 of 15 | 0.302 |
| Serena | 29 | 29,050 | 4 / 15 | 2,551 | -11.3% | 8 of 15 | 1.000 |
| code-review-graph | 30 | 28,118 | 0 / 15 | 2,768 | -3.8% | 10 of 15 | 0.302 |
| Graphify | 10 | 5,482 | 3 / 15 | 2,878 | 0.0% | 7 of 15 | 1.000 |
| bare agent (control) | 0 | 0 | n/a | 2,877 | baseline | n/a | n/a |
Scroll the table sideways to see every column.
Claude Code (claude-sonnet-5), 15 questions. Treat the "agent used it" column as unstable, including our own 15 of 15: rerunning the same setup on later days returned 4 of 15 and then 3 of 15 for us, and 2 of 14 for CodeGraph. It is a property of the pairing of tool and harness on a given day, not of the tool. The same 15 questions on Opus called repowise on 7, inside the band fixed in advance as inconclusive, and that run's token column failed its own control, so no token figure is quoted from it. No quality or cost figure may be compared across the two harnesses, which were graded by different judges.
The third harness, a local model3 rows · 8 columns
The same 15 questions and seed on qwen3:8b under Ollama via opencode, where inference is free and the saving shows up as time. Every cell called its tool.
| Row | Agent used it | Output tokens | vs bare agent | Leaner on | p | Wall clock | vs bare agent |
|---|---|---|---|---|---|---|---|
| repowise, full surface | 15 / 15 | 1,319 | -40.8% | 15 of 15 | 0.00006 | 117s | -27.5% |
| repowise, local-only tools | 15 / 15 | 1,172 | -47.9% | 15 of 15 | 0.00006 | 96s | -41.5% |
| bare agent (control) | 0 / 15 | 2,336 | baseline | n/a | n/a | 171s | baseline |
Scroll the table sideways to see every column.
Two repowise rows, never combined. get_answer writes its answer with a hosted model, so the second row switches it off and leaves only tools that run against the local index; instructed directly to call get_answer, that agent could not reach it in any of its 15 cells. Only repowise and the control were run on this harness. The local-only row's answer quality is a null against the bare agent, so the claim is about as good an answer in roughly half the wall clock.
Compiler-graded call-graph quality7 rows · 6 columns
Precision / recall against call graphs generated by the Go and TypeScript toolchains. Both numbers must be read together.
| Oracle cell | Repowise | CodeGraph | codebase-memory | Graphify | code-review-graph |
|---|---|---|---|---|---|
| cobra / tests | 0.972 / 0.684 | 0.929 / 0.763 | 0.912 / 0.743 | 0.971 / 0.433 | 0.997 / 0.174 |
| gitleaks / no tests | 0.976 / 0.955 | 0.972 / 0.920 | 0.934 / 0.967 | 0.997 / 0.886 | 0.759 / 0.026 |
| gitleaks / tests | 0.974 / 0.914 | 0.971 / 0.895 | 0.922 / 0.945 | 0.995 / 0.832 | 0.800 / 0.032 |
| syft / no tests | 0.943 / 0.513 | 0.872 / 0.508 | 0.635 / 0.542 | 0.771 / 0.447 | 0.968 / 0.201 |
| syft / tests | 0.950 / 0.322 | 0.864 / 0.338 | 0.673 / 0.361 | 0.802 / 0.273 | 0.966 / 0.086 |
| zod / no tests | 0.992 / 0.703 | 0.729 / 0.373 | 0.987 / 0.694 | 0.825 / 0.248 | 0.932 / 0.652 |
| hono / no tests | 0.977 / 0.731 | 0.805 / 0.684 | 0.949 / 0.686 | 0.980 / 0.688 | 0.966 / 0.691 |
Scroll the table sideways to see every column.
Precision / recall in every cell. Five tools, seven cells, 37,853 oracle edges. No tool that finds as much of the graph as Repowise gets more of it right in any cell. Repowise does not lead recall in the five Go cells and is most precise outright in only one cell.
Source audit across nine languages2 rows · 3 columns
Thirty stratified call edges per language per tool (forty for Java), read from source with imports and enclosing scope open.
| Tool | Correct / n | 95% CI |
|---|---|---|
| repowise | 240 / 280 = 85.7% | 81.1–89.3 |
| CodeGraph 1.5.0 | 164 / 280 = 58.6% | 52.7–64.2 |
Scroll the table sideways to see every column.
560 rows across nine languages; Java is read at 40 rows per side. Four language cells separate and five are ties. This comparison covers Repowise and CodeGraph only; the compiler-oracle table above covers the five-tool field on Go and TypeScript.
Code health against CodeScene5 rows · 4 columns
Both tools scored the same 2,770 files at the same leakage-free commit against the same defect labels. Paired tests throughout.
| Paired test | repowise | CodeScene | p |
|---|---|---|---|
| Recall at a 20%-of-lines review budget | 0.173 | 0.074 | 0.003 |
| Effort-aware ranking (Popt) | 0.607 | 0.462 | 0.003 |
| Defect density, size-normalized (below 4.0 : 8.0 and above) | 2.18x | 0.56x | 0.003 |
| Discrimination (ROC AUC) | 0.731 | 0.705 | 0.054, marginal |
| Precision at a 20%-of-lines review budget | 0.580 | 0.636 | 0.64, a tie |
Scroll the table sideways to see every column.
CodeScene's precision lead is not statistically significant, but the behaviour behind it is worth having: it flags about 27 files where we flag 132. That is a more conservative threshold, trading recall for a short list a team will actually work through, and it is a deliberate design choice, not a weaker model. Our AUC edge is marginal, not significant at 0.05.
Call-graph construction cost5 rows · 4 columns
Graph construction only across the same 35 repositories. Three timed runs per cell after a discarded warmup; 175 cells and no failures.
| Tool | Median build | Median peak memory | Fastest on |
|---|---|---|---|
| repowise | 2.77s | 75 MB | 14 of 35 |
| CodeGraph | 3.65s | 757 MB | 16 of 35 |
| codebase-memory-mcp | 6.21s | 1,113 MB | 5 of 35 |
| code-review-graph | 9.97s | 361 MB | 0 |
| Graphify | 12.23s | 860 MB | 0 |
Scroll the table sideways to see every column.
Memory is a clean sweep: Repowise is lowest on 35 of 35 repositories. Speed is level, not a win; CodeGraph is fastest on 16 repositories and Repowise on 14. Repowise builds this arm in memory without serialization, while CodeGraph writes SQLite.
Full index build time5 rows · 3 columns
We are the slowest indexer in the field, on every repo we measured, and it is not close. Measured on django/django.
| Tool | Index time | What it builds |
|---|---|---|
| CodeGraph | 16.4s | call graph |
| code-review-graph | 44.8s | call graph |
| Graphify | 141.5s | call graph, communities |
| repowise (--no-prose) | 366.8s | graph, git history, decisions, code health |
| repowise (default, prose on) | 1,058s | all of the above plus generated documentation |
Scroll the table sideways to see every column.
22x CodeGraph like for like, and 135x with prose on, which is what a default repowise init actually costs you. Both numbers ship. The reason is not an optimisation we forgot: in that same run repowise built 36,485 graph nodes, mined history across 2,630 files, rendered and embedded 3,392 documentation pages, extracted decision records and produced 5,317 health findings. It is also a one-time cost, since updates after the first index are incremental.
FREQUENTLY ASKED
Questions, answered
Did you tune against this benchmark and then publish the result?
The 42 sealed ContextBench instances were split off by instance id, pinned and committed before any of the work started, and were touched once, at publication. Repowise scores 0.876 on that sealed half and 0.810 on the half it was developed against. CodeGraph, which nobody tuned against, scores 0.6093 and 0.6095 on the two halves, so they are equally hard.
Why do you report output tokens instead of dollars per question?
Because dollars measure the run schedule, not the tool. Prompt caching ties dollar cost to the order arms run in: in our harness that correlation was -0.487. Output tokens are never cached, and their correlation with run order is +0.010, so they measure the work the agent actually did.
Does Repowise lead every row?
No tool leads every row, and the complete record on this page lists all of them with their field and verdict. The clearest example is first-index time: a graph-only tool indexes faster, because a Repowise index also mines git history, generates documentation, extracts decisions and scores code health in the same pass. Updates after the first index are incremental.
Can I reproduce this?
Yes. The harnesses, the pre-registration files with their commit timestamps, the arm-parity rules, the statistical tests and every raw run are in the repowise-bench repository. Nothing on this page is measured on a private corpus.
Which tool versions were measured?
CodeGraph 1.5.0, Graphify 0.9.31, Serena 1.6.2.dev0, code-review-graph 2.3.7 and codebase-memory-mcp 0.10.8, measured in August 2026. Each competitor was configured and shown answering before its score counted, so every arm is measured working as intended.
Your repository next
Run it on code you know.
Index a repository free and see the same graph, health scores and agent context on your own code. For teams, we will walk through the results on your stack.