Gemini 3.5 Flash-Lite vs Gemini 4 Argon
Reading a 26.2K-token pull request costs $0.0524 on Gemini 4 Argon, 6.7× the $0.0079 it costs on Gemini 3.5 Flash-Lite. Gemini 3.5 Flash-Lite is a economy model and Gemini 4 Argon a mid-range one. In the benchmark Gemini 4 Argon caught 71 percentage points more of the known defects than Gemini 3.5 Flash-Lite (95% interval −84 pts to −57 pts, a − b).
Side by side
| Figure | Gemini 3.5 Flash-Lite | Gemini 4 Argon |
|---|---|---|
| Price tier | Economy | Mid-range |
| Bugs caughtshare of known bugs | 11% | 82% (better) |
| False alarmsper clean PR | 0.4 (better) | 1.1 |
| Cost per reviewmeasured | $0.0059 (better) | $0.0527 |
| Cost per bug caught | $0.0528 (better) | $0.0706 |
| Exact linecatches on the expected lines | 83% (better) | 78% |
| Review timemean | 103s | 99s (better) |
| Typical review calllist price | $0.0139 (better) | $0.0766 |
| Input / 1M tokens | $0.30 (better) | $2.00 |
| Output / 1M tokens | $2.50 (better) | $10.00 |
| Context window | 1M | 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.5 Flash-Lite | 11% | 33% | 0% | 5% | 0% | 0% | 0% | 33% | 0% | 17% | 0% | 0% | 50% | 0% |
| Gemini 4 Argon | 82% | 83% | 50% | 83% | 75% | 89% | 67% | 100% | 100% | 83% | 100% | 100% | 100% | 0% |
Of the 42 known bugs both were scored on, both caught 6 and neither caught 6. Gemini 4 Argon caught 30 bugs that Gemini 3.5 Flash-Lite missed: 3 in C#, 3 in Java, 3 in PHP, 3 in Ruby, 3 in Rust, 3 in Swift, 3 in TypeScript, 2 in Go, 2 in JavaScript, 2 in Kotlin, 2 in Python and 1 in C++.
On pull requests with no known bug, Gemini 3.5 Flash-Lite raised 0.4 false alarms per review and Gemini 4 Argon 1.1. A measured review cost $0.0059 on Gemini 3.5 Flash-Lite, 89% less than $0.0527 on Gemini 4 Argon.
| Pull request | Language · kind | Gemini 3.5 Flash-Lite | Gemini 4 Argon |
|---|---|---|---|
| MudBlazor/MudBlazorRefactor: MudDebouncedInput, ThrottleDispatcher and DebounceDispatcher | C# · Concurrency | 0/3 | 2/3 |
| OrchardCMS/OrchardCoreSimplify using `StringValues` in Liquid templates | C# · Security | 0/1 | 1/1 |
| TanStack/queryfix(query-core): fix hydration bugs for already resolved promises | TypeScript · Logic | 0/1 | 1/1 |
| aio-libs/aiohttpkeep websocket compression state across interleaved control frames | Python · Logic | 0/1 | 1/1 |
| better-auth/better-authfix(saml): IdP-Initiated Callback Routing | TypeScript · Security | 0/2 | 2/2 |
| denoland/denoperf(libs/core): poll only ready handles and yield between I/O batches | Rust · Concurrency | 0/1 | 1/1 |
| django/djangoFixed #36226 -- Accepted str or bytes for password and salt in password hashers. | Python · Error handling | 0/1 | 1/1 |
| doctrine/ormFix collection filtering API for IN/NOT IN comparisons that require type conversions | PHP · Logic | 0/1 | 1/1 |
| dotnet/orleansfix(serialization): cap codec allocations | C# · Logic | 0/1 | 1/1 |
| ggml-org/llama.cpprpc : cache and reuse compute graphs | C++ · Security | 0/1 | 1/1 |
| go-chi/chifeat: middleware.ClientIP, a replacement for middleware.RealIP | Go · Security | 0/1 | 1/1 |
| groue/GRDB.swiftDatabaseQueue and DatabaseSnapshot reads can access task locals | Swift · Concurrency | 0/1 | 1/1 |
| iBotPeaches/Apktoolrefactor: Improve renaming/injection of resources in stripped APKs | Java · Security | 0/1 | 1/1 |
| jhy/jsoupStore cached child els in Attributes, not field | Java · Concurrency | 0/2 | 1/2 |
| kotest/kotestFix DataClassEq comparator | Kotlin · Logic | 0/1 | 1/1 |
| ktorio/ktorKTOR-9171 Redesign ByteReadChannel.readUTF8Line API | Kotlin · Logic | 0/1 | 1/1 |
| laravel/framework[12.x] Colocate Container build functions with the `Buildable` interface | PHP · Error handling | 0/1 | 1/1 |
| mockito/mockitoAdd core API to enable Kotlin singleton mocking | Java · API misuse | 0/1 | 1/1 |
| pinojs/thread-streamrefactor: replace setTimeout with Atomics.waitAsync | JavaScript · Concurrency | 0/1 | 1/1 |
| pointfreeco/swift-composable-architectureRemove child store from parent when invalidated | Swift · Resource handling | 0/1 | 1/1 |
| pointfreeco/swift-navigationUIKit: Fix switch presented child double dismiss | Swift · Logic | 0/1 | 1/1 |
| rack/rackApply bytesize and number of param limits in QueryParser | Ruby · Security | 0/1 | 1/1 |
| rails/railsReimplement Action Cable redis adapter with redis-client | Ruby · Logic | 0/1 | 1/1 |
| rustls/rustlsAffix `Protocol` at top of client handshake | Rust · Logic | 0/1 | 1/1 |
| sindresorhus/p-throttleAdd `weight` option | JavaScript · Logic | 0/1 | 1/1 |
| socketry/asyncBarrier wait in completion order + `Queue#close`. | Ruby · Concurrency | 0/1 | 1/1 |
| symfony/symfony[Security] Allow multiple OIDC discovery endpoints | PHP · Security | 0/1 | 1/1 |
| tokio-rs/tokiotime: move lazy-registration state into `Sleep` | Rust · Logic | 0/1 | 1/1 |
| traefik/traefikAdd the option to define custom cipher suites for backend serversTransport | Go · API misuse | 0/1 | 1/1 |
| trpc/trpcfix(server): pass maxDurationMs timeout signal to subscription handlers | TypeScript · Concurrency | 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.5 Flash-Lite and Gemini 4 Argon.