Quick answer

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.

ModelAppDecodePrefill (long)GPU mem (MiB)Load
Llama 3.2 3BOllama 0.32.15350.5 t/s17,862 t/s3,7602.3s
Llama 3.2 3BLM Studio 0.4.21316.0 t/s20,337 t/s3,8082.8s
Qwen 2.5 14BOllama 0.32.15102.2 t/s5,038 t/s10,3565.5s
Qwen 2.5 14BLM Studio 0.4.2197.6 t/s5,567 t/s10,4057.7s
gpt-oss 20BOllama 0.32.15 (own fork)213.7 t/s9,187 t/s13,5708.1s
gpt-oss 20BLM Studio 0.4.21 (upstream MXFP4)242.8 t/s9,618 t/s12,5338.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)

ModelServerDecodePrefill (long)GPU mem (MiB)Load
Llama 3.2 3BOllama 0.32.1319 t/s17,444 t/s4,3433.2s
Llama 3.2 3Bllama.cpp b10507338 t/s16,809 t/s4,3392.5s
Qwen 2.5 14BOllama 0.32.199.4 t/s5,004 t/s10,9415.6s
Qwen 2.5 14Bllama.cpp b10507101.4 t/s4,697 t/s10,9428.1s
gpt-oss 20BOllama 0.32.1195.8 t/s14,1528.6s
gpt-oss 20Bllama.cpp (upstream GGUF)222-238 t/s²13,03719.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?
Split decision, measured 2026-08-26 on the same RTX 5080 with both apps loading the same GGUF bytes. Ollama 0.32.15 decodes 5-11% faster on dense models (351 vs 316 t/s on Llama 3.2 3B; 102 vs 98 on Qwen 2.5 14B). LM Studio 0.4.21 prefills 5-14% faster at ~450-token prompts, and its upstream gpt-oss 20B conversion decodes 14% faster than Ollama’s fork (243 vs 214 t/s). Settings move these numbers more than the app choice does: LM Studio’s auto GPU offload cost gpt-oss 23% at stock (a single-variable re-run recovered all of it, 244.9 t/s), and Ollama’s context slider at 256k — clamped to the model’s 131k maximum — cut the 3B from 351 to 102 t/s.
Which is faster, Ollama or llama.cpp?
In this dataset, llama.cpp b10507 decodes 2-6% faster than Ollama 0.32.1 on dense models (338 vs 319 t/s on Llama 3.2 3B, 101.4 vs 99.4 on Qwen 2.5 14B) and 13-22% faster on the gpt-oss 20B mixture-of-experts, where the two servers load different conversions of the model. Ollama prefills 4-7% faster at real prompt lengths. Both run the same engine lineage, so the gaps are wrapper and version effects rather than different math.
How was the comparison kept fair?
Same machine, same GPU, and for the dense models the same sha256-identical GGUF files loaded by both servers, one server resident at a time. Generation pinned to temperature 0, seed 42, 256 tokens, context 4096, full offload, with a unique prompt nonce per run and prompt caching disabled. Rates come from each server’s own timing counters, and a wall-clock recomputation agreed within 2% on every run but one (the first gpt-oss run on llama-server, 3.6% off — a cold-start artifact).
Why does the gpt-oss row use a different model file?
Ollama’s gpt-oss:20b blob declares the architecture as ‘gptoss’, which upstream llama.cpp rejects with ‘unknown model architecture’. The llama.cpp row therefore uses ggml-org’s upstream MXFP4 GGUF of the same model. That build also allocated 1.1GB less GPU memory than Ollama’s fork at the same context — a real difference between the two conversions, disclosed rather than hidden.
What does the short-prompt prefill column measure?
Mostly per-request overhead, and it is kept in the CSV precisely to demonstrate that. At a ~40-token prompt, prefill tokens-per-second is dominated by fixed request costs; at ~420 tokens the same servers report 1.6-3.2x higher prefill rates (config-dependent) and the between-server gap collapses to single digits. Use prefill_long_tps for throughput claims.

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.

About the author

Written by Lowell K. Wood IV, who builds and runs TechFuelHQ from St. Louis, Missouri.