Skip to content

Five chips, two runtimes.

Median time to first token (TTFT) and time per output token (TPOT), from 60 to 90 benchmark prompts per cell (GSM8K, IFEval, BFCL). Prompts run 19 to 772 tokens, median 92.

Purpose
Show how fast five small models answer on five phone chips, on the two runtimes the app ships, so a reader can pick a model and runtime for a given phone. Time to first token is what a user waits before the reply starts; time per output token is how fast it then streams.
How it was graded
Not graded here: this page is timing only. The same 90 prompts (30 GSM8K, 30 IFEval, 30 BFCL; Gemma 3 skips BFCL, having no tool syntax) ran greedy with thinking off, and the median prefill and decode time of each cell is plotted. The pass rates for these runs are in the repository's benchmark matrix.
How long it ran
One pass per cell on 2026-09-03 and 04. Generation time per cell ran from 6 minutes (LFM2.5-1.2B on ExecuTorch, 8 Elite) to about 100 minutes (SmolLM3 on llama.cpp, Tensor G5); 29 hours of phone time in all, plus loading and Test Lab queueing.

Every model on every chip

Latency map

Each line joins one chip's two runtimes. Lower and left is faster. Both axes are logarithmic.

llama.cpp, GGUFExecuTorch

0.30.51251020203050100200300Time to first token, seconds (lower and left is faster)Time per output token, msD94008 Gen 38 EliteTensor G5Exynos 2400

All models, all chips

The same numbers as a grid, both columns on logarithmic scales. The model picked above is banded.

llama.cpp, GGUFExecuTorch

TTFT, s0.31310TPOT, ms2050100200Gemma 3 1BD94008 Gen 38 EliteTensor G5Exynos 2400LFM2.5 1.2BD94008 Gen 38 EliteTensor G5Exynos 2400Qwen3 1.7BD94008 Gen 38 EliteTensor G5Exynos 2400Llama 3.2 3BD94008 Gen 38 EliteTensor G5Exynos 2400SmolLM3 3BD94008 Gen 38 EliteTensor G5Exynos 2400

Limits

  • Not matched conditions. The Dimensity 9400 ran in hand under a desk fan. The Snapdragon 8 Gen 3 ran on Qualcomm Device Cloud and the 8 Elite, Tensor G5 and Exynos 2400 on Firebase Test Lab, racked, where phones throttle within about 40 seconds.
  • Two open gaps. Tensor G5 and Exynos 2400 decode at about half speed on llama.cpp against ExecuTorch, cause unknown. SmolLM3 on ExecuTorch prefills at a third of llama.cpp's rate on every chip, which is the compiled model rather than the phones.
  • Files. llama.cpp ran Q4_K_M GGUFs, Qwen3 at Q8_0. ExecuTorch ran the published XNNPACK INT8/INT4 exports, LFM2.5 as 8da4w and Llama 3.2 as SpinQuant. Runs on 2026-09-03 and 04, single pass, no repeats.

Every number

Medians per cell. Time to first token is shown with the median prefill rate behind it, and time per output token with the decode rate it amounts to.

Chipllama.cpp, GGUFExecuTorch
TTFT, sPrefill, tok/sTPOT, msTTFT, sPrefill, tok/sTPOT, ms
Gemma 3 1B
Dimensity 94001.2761420.4316448
Snapdragon 8 Gen 31.0269510.3719227
Snapdragon 8 Elite0.8079280.4016744
Tensor G51.35561130.4815650
Exynos 24001.6845750.4515156
LFM2.5 1.2B
Dimensity 94000.81138310.3032125
Snapdragon 8 Gen 30.73130430.4421727
Snapdragon 8 Elite0.59153270.3028818
Tensor G50.831121060.3224846
Exynos 24000.9792590.4220838
Qwen3 1.7B
Dimensity 94001.05113570.7612264
Snapdragon 8 Gen 30.49195740.7712041
Snapdragon 8 Elite0.37266400.7513041
Tensor G51.17931840.8910294
Exynos 24000.89100970.8111267
Llama 3.2 3B
Dimensity 94002.3939821.368782
Snapdragon 8 Gen 32.11431071.826691
Snapdragon 8 Elite1.7048831.478063
Tensor G52.43371801.5571125
Exynos 24003.46251511.7364119
SmolLM3 3B
Dimensity 94001.18427912.691391
Snapdragon 8 Gen 31.433910110.331485
Snapdragon 8 Elite1.0347797.182167
Tensor G51.863523915.9011108
Exynos 24001.792913212.2611121