Two captures on one RTX 5080. 2026-08-20: llama.cpp b10507 decodes 2-6% faster than Ollama 0.32.1 on dense models. 2026-08-26: Ollama 0.32.15 decodes 5-11% faster than LM Studio 0.4.21 (351 vs 316 t/s on Llama 3.2 3B), while LM Studio prefills faster and its upstream gpt-oss conversion decodes 14% faster. CC BY 4.0 CSVs.
By LK Wood IV · Published 2026-08-20 · Updated 2026-08-26 · ~4 min read · St. Louis County, MO
The short version
This page holds two captures on the same retail RTX 5080. On 2026-08-20 I ran Ollama against bare llama.cpp; on 2026-08-26 I ran Ollama against LM Studio, same GGUF bytes on both sides via hard links. Across both captures the pattern holds: every one of these tools is llama.cpp underneath, decode differences on dense models stay inside 11%, and the settings each app ships with move throughput far more than the app choice does.
Downloads: llm-server-compare-2026-08.csv (Ollama vs llama.cpp) and llm-server-compare-2026-08-26-lmstudio.csv (Ollama vs LM Studio, both conditions). CC BY 4.0, per-run decode arrays included.
Capture 2: Ollama 0.32.15 vs LM Studio 0.4.21 (2026-08-26)
Settings normalized on both sides: context 4096, full GPU offload, temperature 0, seed 42, one serving slot, per-run prompt nonces throughout. Decode figures are medians of five runs; long-prefill figures, measured at ~450 prompt tokens, are medians of three with a warmup discarded. The decision-layer writeup is the LM Studio comparison article.
| Model | App | Decode | Prefill (long) | GPU mem (MiB) | Load |
|---|---|---|---|---|---|
| Llama 3.2 3B | Ollama 0.32.15 | 350.5 t/s | 17,862 t/s | 3,760 | 2.3s |
| Llama 3.2 3B | LM Studio 0.4.21 | 316.0 t/s | 20,337 t/s | 3,808 | 2.8s |
| Qwen 2.5 14B | Ollama 0.32.15 | 102.2 t/s | 5,038 t/s | 10,356 | 5.5s |
| Qwen 2.5 14B | LM Studio 0.4.21 | 97.6 t/s | 5,567 t/s | 10,405 | 7.7s |
| gpt-oss 20B | Ollama 0.32.15 (own fork) | 213.7 t/s | 9,187 t/s | 13,570 | 8.1s |
| gpt-oss 20B | LM Studio 0.4.21 (upstream MXFP4) | 242.8 t/s | 9,618 t/s | 12,533 | 8.4s |
At stock as-installed settings the dense rows barely move, but two defaults bite: LM Studio’s automatic GPU offload held gpt-oss to 186.3 t/s, 23% below its own tuned figure — and a single-variable re-run (stock config, only the offload slider moved to max) recovered the whole gap at 244.9 t/s. Ollama’s app-level context slider set to 256k (clamped to this model’s 131,072 maximum) dropped Llama 3.2 3B from 351 to 102 t/s with the KV cache spilled to CPU. Both are recorded as their own rows in the CSV and raw JSON. Idle app overhead: the Ollama service tree held 78-132 MB of RAM; LM Studio’s GUI plus server held 709-928 MB across quiet-window observations (one 3.1 GB transitional reading mid-unload excluded, kept in the raw JSON). Ollama’s engine is its vendored llama.cpp at commit 9d77fa172; LM Studio’s is its packaged llama.cpp runtime 2.29.1 (CUDA 12) — and both run the model in a llama-server process.
Ollama alone gained 3-10% decode over its own 08-20 numbers here (319→351 on the 3B; 195.8→213.5 on gpt-oss, defaults condition) across six days and fourteen patch-version increments — with the caveat that the 08-20 capture predates this page’s quiet-window discipline, so part of that spread may be ambient. Either way, single-digit decode gaps between these tools do not survive a version bump.
Capture 1: Ollama 0.32.1 vs llama.cpp b10507 (2026-08-20)
| Model | Server | Decode | Prefill (long) | GPU mem (MiB) | Load |
|---|---|---|---|---|---|
| Llama 3.2 3B | Ollama 0.32.1 | 319 t/s | 17,444 t/s | 4,343 | 3.2s |
| Llama 3.2 3B | llama.cpp b10507 | 338 t/s | 16,809 t/s | 4,339 | 2.5s |
| Qwen 2.5 14B | Ollama 0.32.1 | 99.4 t/s | 5,004 t/s | 10,941 | 5.6s |
| Qwen 2.5 14B | llama.cpp b10507 | 101.4 t/s | 4,697 t/s | 10,942 | 8.1s |
| gpt-oss 20B | Ollama 0.32.1 | 195.8 t/s | — | 14,152 | 8.6s |
| gpt-oss 20B | llama.cpp (upstream GGUF) | 222-238 t/s² | — | 13,037 | 19.8s |
² Prompt-dependent on this MoE: a fixed prompt held 232-242 t/s (median 238.5); varied prompts were bimodal with a ~176 slow path (median 235.3), and the published 222 median includes a cold first run. Ollama’s fork ran a flat 195.7-196.3 under the same nonce scheme. Load times are cold-start to first ready response: llama-server was faster on the 3B, Ollama faster on both larger models.
The desktop baseline was 1,642 MiB of GPU memory before any model loaded (nvidia-smi reports MiB; the CSV column is vram_total_mib_median). These figures run 2-7% above our RTX 5080 throughput dataset for the same models because that capture used 500-1,650-token prompts; both pages state their regime.
Method
I kept one server resident at a time, with a fresh process per model and ollama stop
plus process-tree kills between configurations. Every request carried a unique nonce prefix, llama-server
additionally ran with prompt caching disabled, and generation was pinned to temperature
0, seed 42, 256 tokens (64 on the long-prefill pass), context 4096, full offload. Rates
are each server’s own counters; a wall-clock recomputation agreed within 2% on every
run (one cold-start exception at 3.6%, disclosed above), and llama-bench served as a
third instrument on the 3B (pp512 19,589 ± 2,071 t/s, tg256 367.1 ± 0.7 t/s, raw
engine loop). The capture scripts are available on request via hello@techfuelhq.com.
The limits, named. One GPU, one box, three models per capture, and a short-prompt prefill column retained only to document its own overhead artifact. Token counts for identical text differ slightly between tools because each applies its own chat template handling. The decision-layer writeups are Ollama vs llama.cpp and Ollama vs LM Studio; this page is the citable record for both.
Frequently asked questions
Which is faster, Ollama or LM Studio?
Which is faster, Ollama or llama.cpp?
How was the comparison kept fair?
Why does the gpt-oss row use a different model file?
What does the short-prompt prefill column measure?
Evidence ledger
- Last updated
- Methodology
- This guide was written and edited by Lowell K. Wood IV in St. Louis County, MO. Specs and prices verified against vendor and project documentation current on the date above. Full editorial standard: methodology.
- Update log
- 2026-08-26 — v1.1.0 adds the Ollama 0.32.15 vs LM Studio 0.4.21 capture: 12 configurations (3 models x 2 apps x defaults/normalized) on the same rig, same GGUF bytes via hard links (sha256-verified), plus app RAM working sets, TTFT, and load times. A background indexing job was caught depressing 3B decode ~15% mid-capture; it was suspended and every published cell re-measured in the quiet window. Ollama itself gained 3-10% decode since the 08-20 capture (0.32.1 to 0.32.15 updated its vendored engine).
- 2026-08-20 — v1.0.0 first publication. Six measured configurations (3 models x 2 servers), temperature 0, seed 42, per-iteration prompt nonce, fresh server per model, wall-clock cross-check within 2% on all runs but one cold start, llama-bench as a third instrument on the 3B. gpt-oss on llama.cpp uses the upstream GGUF because Ollama’s blob carries its own ‘gptoss’ architecture tag.
- Corrections
- Spotted an error or a stale number? Email hello@techfuelhq.com. Confirmed corrections are added to the update log above.