RTX 4090 vs RTX 3090
MeasuredOn gpt-oss-20b (same quant and runtime family, chat-short), the RTX 4090 decoded at 242.6 tok/s and the RTX 3090 at 207.2 tok/s, each side's fastest matched run for that model.
Signed, community-submitted decode tok/s, prefill, and TTFT for RTX 4090 vs RTX 3090 — every number links to the run it came from.
Across 9 matched pairs (same model, size and quant, same runtime family, chat-short), the RTX 4090 decoded 0.8% to 22.5% faster than the RTX 3090, with a median of 14.9%: the smallest lead was Llama 3.1 8B on Ollama (137.32 vs 136.20 tok/s, r_2np7abzjobe vs r_9hurqggbshk) and the largest was GLM-4.7-Flash on Ollama (164.94 vs 134.62 tok/s, r_ted0u8uyre0 vs r_kalwcyab-86). Leads are calculated from single measured runs on different hosts, and the llama.cpp pairs used different llama.cpp builds. On Qwen3.8-27B the gap was about 14% on all four workloads (r_11kn1epxewh vs r_ptct8o01o5l). Three overlaps are listed separately as not like-for-like: gemma3 (4.3B vs 11.8B), the Nemotron Bolt runs (no quant reported) and qwen2.5-coder 7.6B (the RTX 3090 request included a cold model load). Both are 24GB cards. They ran on different hosts and llama.cpp builds, so these are measured reference points, not a controlled ranking. Older Ollama runs from a host whose RTX 4090 reports 48GB of GPU memory are excluded here: a retail RTX 4090 has 24GB, and we can't confirm what that card is. For whether the upgrade is worth buying, read our RTX 3090 vs 4090 buying explanation.
How to read these results
On gpt-oss-20b, the RTX 4090 decoded at 242.6 tok/s and the RTX 3090 at 207.2 tok/s. Each row in the table is a like-for-like pair: the same model and size, quant and runtime family on the chat-short workload, using each side's fastest such run. Runs can still differ in host, runtime build and context. These are reference results, not a controlled speed or answer-quality ranking. Inspect both source runs before choosing hardware. 3 more models were measured on both but not like-for-like; they are listed separately in the "Not a like-for-like pair" table below and left out of the comparison.
Models that have data on both rigs
| Model | RTX 4090 decode | RTX 3090 decode | Δ | Source runs |
|---|---|---|---|---|
| gpt-oss-20b | 242.6tok/s chat-short · llama.cpp · Q4_K_M | 207.2tok/s chat-short · llama.cpp · Q4_K_M | +35.4 | r_t-a9v_ipdit · r_nakw1nq6clw |
| Qwen3-Coder-30B-A3B-Instruct | 232.5tok/s chat-short · llama.cpp · Q4_K_M | 199.7tok/s chat-short · llama.cpp · Q4_K_M | +32.7 | r_1k8942tw3zf · r_0dh1kzbv4h0 |
| glm-4.7-flash (29.9B) | 164.9tok/s chat-short · ollama · Q4_K_M | 134.6tok/s chat-short · ollama · Q4_K_M | +30.3 | r_ted0u8uyre0 · r_kalwcyab-86 |
| llama3.1 (8.0B) | 137.3tok/s chat-short · ollama · Q4_K_M | 136.2tok/s chat-short · ollama · Q4_K_M | +1.1 | r_2np7abzjobe · r_9hurqggbshk |
| Qwen2.5-Coder-14B-Instruct | 89.87tok/s chat-short · llama.cpp · Q4_K_M | 78.21tok/s chat-short · llama.cpp · Q4_K_M | +11.7 | r_eqnsqmgz29a · r_rkyf9wxzw9z |
| qwen2.5-coder (14.8B) | 81.18tok/s chat-short · ollama · Q4_K_M | 69.21tok/s chat-short · ollama · Q4_K_M | +12.0 | r_ttniv2j74vk · r_6ahy-dq0f_0 |
| Qwen3.6-27B | 47.14tok/s chat-short · llama.cpp · Q4_K_M | 42.73tok/s chat-short · llama.cpp · Q4_K_M | +4.4 | r_d_wda_rw62f · r_qm1xyvjmx_r |
| Qwen3-32B | 43.47tok/s chat-short · llama.cpp · Q4_K_M | 38.45tok/s chat-short · llama.cpp · Q4_K_M | +5.0 | r_ayy9rjgha5r · r_km62sybxga6 |
| Qwen3.8-27B | 43.06tok/s chat-short · llama.cpp · Q4_K_M | 37.65tok/s chat-short · llama.cpp · Q4_K_M | +5.4 | r_11kn1epxewh · r_ptct8o01o5l |
Not a like-for-like pair
These have data on both sides, but the model size, quant or runtime differs, so they are not a head-to-head and are left out of the comparison above.
| Model | RTX 4090 decode | RTX 3090 decode | Why it isn't matched | Runs |
|---|---|---|---|---|
| gemma3 | 195.0tok/s ollama · Q4_K_M · 4.3B | 78.65tok/s ollama · Q4_K_M · 11.8B | size 4.3B vs 11.8B | r_dlanfbgym0h · r_3gnxkzhhmyj |
| NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB | 107.3tok/s llama.cpp · quant unreported | 87.75tok/s llama.cpp · quant unreported | quant unreported | r_vkjsinuhlyl · r_-sifd5otbpy |
| qwen2.5-coder (7.6B) | 131.6tok/s ollama · Q4_K_M · 7.6B | 39.86tok/s ollama · Q4_K_M · 7.6B | RTX 3090 request includes a cold model load | r_nrpc8-onxu2 · r_pb0jpnbujji |
See also: RTX 4090 benchmarks · RTX 3090 benchmarks · All hardware · All models · Methodology
Request the missing runs
No measured run yet for these pairs. Vote for the one you want; the most-requested runs go first. See all requests.
We never sell or share your email. Privacy