Gemini 3.1 Pro vs GPT-6 Luna
Reading a 26.2K-token pull request costs $0.0524 on Gemini 3.1 Pro, 20× the $0.0026 it costs on GPT-6 Luna. Gemini 3.1 Pro is a mid-range model and GPT-6 Luna a economy one. The benchmark cannot separate their recall: Gemini 3.1 Pro minus GPT-6 Luna is 0 pts (95% interval −13 pts to +13 pts).
Side by side
| Figure | Gemini 3.1 Pro | GPT-6 Luna |
|---|---|---|
| Price tier | Mid-range | Economy |
| Bugs caughtshare of known bugs | 67% | 67% |
| False alarmsper clean PR | 0.8 | 0.7 (better) |
| Cost per reviewmeasured | $0.2499 | $0.0028 (better) |
| Cost per bug caught | $0.4134 | $0.0046 (better) |
| Exact linecatches on the expected lines | 89% | 97% (better) |
| Review timemean | 349s | 29s (better) |
| Typical review calllist price | $0.0814 | $0.0038 (better) |
| Input / 1M tokens | $2.00 | $0.10 (better) |
| Output / 1M tokens | $12.00 | $0.50 (better) |
| Context window | 1M | 1.1M |
Head to head
The known bugs both were scored on, by who caught each in at least one run.
By language
| Model | All | TypeScript6 bugs | Go4 bugs | Java4 bugs | Rust4 bugs | C#3 bugs | JavaScript3 bugs | Kotlin3 bugs | PHP3 bugs | Python3 bugs | Ruby3 bugs | Swift3 bugs | C++2 bugs | C1 bug |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gemini 3.1 Pro | 67% | 67% | 38% | 78% | 88% | 56% | 33% | 67% | 67% | 67% | 100% | 100% | 50% | 50% |
| GPT-6 Luna | 67% | 83% | 25% | 65% | 75% | 56% | 67% | 67% | 67% | 100% | 67% | 100% | 50% | 0% |
Of the 42 known bugs both were scored on, both caught 25 and neither caught 6. Gemini 3.1 Pro caught 7 bugs that GPT-6 Luna missed: 2 in Go, 1 in C, 1 in Java, 1 in Ruby, 1 in Rust and 1 in TypeScript. GPT-6 Luna caught 4 bugs that Gemini 3.1 Pro missed: 2 in TypeScript, 1 in Go and 1 in JavaScript.
On pull requests with no known bug, Gemini 3.1 Pro raised 0.8 false alarms per review and GPT-6 Luna 0.7. A measured review cost $0.2499 on Gemini 3.1 Pro, 88× the cost of $0.0028 on GPT-6 Luna.
| Pull request | Language · kind | Gemini 3.1 Pro | GPT-6 Luna |
|---|---|---|---|
| socketry/asyncBarrier wait in completion order + `Queue#close`. | Ruby · Concurrency | 2/2 | 0/1 |
| traefik/traefikAdd the option to define custom cipher suites for backend serversTransport | Go · API misuse | 1/1 | 0/1 |
| withastro/astroPort Go's csrf protection | TypeScript · Logic | 2/2 | 0/1 |
| c-ares/c-aresEvent Thread could stall when not notified of new queries on existing connections that are in a bad state | C · Resource handling | 1/2 | 0/1 |
| golang/gocrypto/tls: add LocalCertificate to ConnectionState | Go · Logic | 1/2 | 0/1 |
| jhy/jsoupStore cached child els in Attributes, not field | Java · Concurrency | 1/2 | 0/2 |
| nushell/nushellreorganize nushell configuration | Rust · Error handling | 1/2 | 0/1 |
| TanStack/queryfix(query-core): fix hydration bugs for already resolved promises | TypeScript · Logic | 0/1 | 1/1 |
| colinhacks/zodfeat(v4): parse input containing reference cycles | TypeScript · Resource handling | 0/1 | 1/1 |
| go-chi/chifeat: middleware.ClientIP, a replacement for middleware.RealIP | Go · Security | 0/1 | 1/1 |
| nodejs/undicifeat: add configurable maxPayloadSize for WebSocket | JavaScript · Security | 0/1 | 1/1 |
Defects caught over all runs: a PR reviewed three times with one known bug shows 3/3 when it was caught every time.
Every bug each was scored on: Gemini 3.1 Pro and GPT-6 Luna.