The TPS Method

How we measure local LLM speed

A reproducible approach to measuring local LLM inference speed across the hardware × software matrix real people actually run.

What we track

Five metrics, measured together

Five metrics, measured together. Six dimensions, varied independently.

Six dimensions, varied independently

The same five metrics are captured across the whole matrix that determines local inference speed. Change one dimension, hold the rest, and the leaderboard tells you what that change actually cost.

  • OS macOS · Windows · Linux
  • Hardware Apple Silicon · x86 + dGPU · Strix Halo · …
  • Hosting tool Ollama · LM Studio · llama.cpp · …
  • Inference engine llama.cpp · MLX · vLLM · …
  • GPU backend Metal · CUDA · ROCm · Vulkan
  • Model Llama · Qwen · Gemma · quant & size

How credibility works

Every number carries a trust tier

A community leaderboard is only as good as its worst unmarked number. Every submission carries a trust tier so you always know how much to believe it.

  • UnverifiedDefault tier. No auto-parseable evidence attached yet — take the number as a claim, not a fact.
  • CommunityAuto-promoted after net +10 community upvotes with no open flags. The crowd vouches for it.
  • Tool outputA recognised benchmark tool's raw output file was attached and parsed — the numbers came from the tool, not typed by hand.
  • TPS ApprovedA moderator reproduced or verified the run. The highest trust tier on the board.

Hybrid demotion — fast signals, human confirmation

  • Unverified A fast community signal applies a soft warning immediately — but never silently rewrites the earned tier.
  • A moderator confirms every tier change. Community votes can raise a flag; only a human moves a result down to Community suspect or hides it.
  • Mod notes are public. When a result is demoted, the reason is visible on the submission.
  • Appeals are visible. The submitter can respond, and the exchange stays on the record.

How to reproduce

Run every number yourself

Every metric on this page comes from commands you can run yourself. This section doubles as the how-to for submitting your own benchmark.

The standard run

  • Prompt: the standard prompt (about 500 tokens; the exact count depends on the model's tokenizer) or the tool's 512-token prefill.
  • Output: 128 tokens where the tool can cap it. Thinking off in Ollama and MLX. llama-bench and llama-benchy fix the token counts, so thinking doesn't change their speeds.
  • Runs: llama-bench and llama-benchy average 5 runs after their own warm-up. Ollama and MLX: one warm-up with a different prompt, then one recorded run.
  • Conditions: on mains power, with no other heavy programs running. Put the server settings (flash attention, KV-cache type, context length) in the notes.
  • Honest runs on the same machine still differ by up to about 10% in generation speed.

Per-tool commands

Per-OS power & memory capture

  • macOS sudo powermetrics --samplers cpu_power,gpu_power package power & memory pressure
  • Windows Intel PCM · nvidia-smi --query-gpu=power.draw --format=csv NVIDIA GPU power, one reading: run it while the benchmark runs
  • Linux sudo perf stat -e power/energy-pkg/ … RAPL energy via perf — CPU package only, not the GPU
  • AMD (ROCm) rocm-smi --showpower GPU package power, no sudo needed

Submission API for CI pipelines

Limitations & credits

What this doesn't measure

The TPS Method measures speed, not quality. It says nothing about how good a model's answers are, how well it holds up over long-context coherence, or how it scales under batched, concurrent load. A fast wrong answer is still wrong — read these numbers as one axis of a bigger decision.


Credits & inspiration

The TPS Method is inspired by systematic local-LLM benchmarking work done in public by others.

The TPS Method · tokenspersecond.ai