Gatling Benchmarks

Benchmark: Anthropic LLM models under load

How Claude models actually behave under real streaming load generated with Gatling.

Takeaway

Speed and price don't move together

The clearest signal in this benchmark isn't which model is fastest. It's that a premium-tier model can cost several times more per request without being proportionally faster. That gap only shows up under real load, not on a pricing page, which is the whole point of testing it directly instead of assuming it.

All results at a glance

Performance by prompt size

Lower total time is better. Every model was sent the exact same three prompts (short, medium, long) under identical load conditions. TTFT and total time are shown as median / p95 across 20 requests per cell.
Note: Claude Sonnet 5's TTFT does not scale predictably with prompt size in this run. It's higher on short prompts (1,800 ms median) than on long ones (1,105 ms median), holding consistently at both median and p95. * On long prompts, Claude Sonnet 5 hit a voluntary output token cap set for this run on 8 of 20 requests, rather than finishing naturally — those are included in the Sonnet/long figures above. See methodology below.

ModelPrompt sizeInput tokensOutput tokensTTFT (p50 / p95)Total time (p50 / p95)Cost / request
Claude Haiku 4.5Short14212635 / 843 ms2,642 / 3,024 ms$0.0011
Claude Opus 4.8Short143861,068 / 1,981 ms6,227 / 6,711 ms$0.0097
Claude Sonnet 5Short143861,800 / 2,227 ms6,429 / 7,599 ms$0.0039
Claude Haiku 4.5Medium68–882,404644 / 1,585 ms17,836 / 20,046 ms$0.0121
Claude Opus 4.8Medium68–881,4051,162 / 1,603 ms21,054 / 23,203 ms$0.0356
Claude Sonnet 5Medium68–881,7991,069 / 2,007 ms21,388 / 26,941 ms$0.0182
Claude Haiku 4.5Long315–4372,8942,100 / 7,460 ms32,484 / 37,958 ms$0.0148
Claude Opus 4.8Long315–4372,6901,117 / 1,804 ms45,508 / 50,139 ms$0.0694
Claude Sonnet 5Long315–4373,6271,105 / 1,391 ms45,881 / 53,076 ms *$0.0371 *
Short prompts · ~14 input tokens

Throughput under load: short prompts

Higher tokens/sec is better. A simple one-line question, sent under identical concurrent load to every model.

Claude Haiku 4.5 leads at 80.7 tokens/sec on short prompts, 29% faster than Opus 4.8.
Claude Haiku 4.5Claude Sonnet 5Claude Opus 4.8

Tokens generated per second, short prompts, under concurrent load.

Medium prompts · ~80 input tokens

Throughput under load: medium prompts

A multi-part technical question requiring a structured answer.

Claude Haiku 4.5 more than doubles its throughput on medium prompts, reaching 133.6 tokens/sec.
Claude Haiku 4.5Claude Sonnet 5Claude Opus 4.8

Tokens generated per second, medium prompts, under concurrent load.

Long prompts · ~400 input tokens

Throughput under load: long prompts

A multi-paragraph diagnostic scenario, the kind of prompt a real production troubleshooting assistant would receive.

Claude Haiku 4.5 stays fastest even at long context length, at 88.4 tokens/sec.
Claude Haiku 4.5Claude Sonnet 5Claude Opus 4.8

Tokens generated per second, long prompts, under concurrent load.

Cost under load

Speed and cost don't scale together

Lower is better. Real cost per request, long prompts: the widest gap in the whole benchmark.

Opus 4.8 costs 4.7× more per request than Haiku 4.5 on long prompts, for a model that's only 1.5× slower under this load.
Claude Haiku 4.5Claude Sonnet 5Claude Opus 4.8

Real $ cost per request (input + output), long prompts.

The verdict

Ranking, by prompt size

Based on this load benchmark only. Response quality is a separate discipline and isn't measured here.

Prompt sizeMost cost-efficientHighest throughput under load
Short promptClaude Haiku 4.5: $0.0011/reqClaude Haiku 4.5: 80.7 tok/s
Medium promptClaude Haiku 4.5: $0.0121/reqClaude Haiku 4.5: 133.6 tok/s
Long promptClaude Haiku 4.5: $0.0148/reqClaude Haiku 4.5: 88.4 tok/s

Claude Haiku 4.5 leads throughput at every prompt size in this benchmark — a real result, not a rounding artifact. It's not the fastest to first token on long prompts, though: at 2,100 ms median TTFT (p95: 7,460 ms), it's the slowest of the three to start responding, even as it finishes fastest overall. Claude Sonnet 5 and Claude Opus 4.8 trade places behind it in throughput depending on prompt size (see the full breakdown table above).

Open methodology

How we benchmark

Every request went through Gatling's own SSE streaming client against Anthropic's live API, the same tool you'd use to load test your own AI feature, not a synthetic timer.

3
Models compared
3
Prompt sizes tested
10
Concurrent virtual users per model
180
Total requests

Each model received the exact same three prompts: short (~14 tokens), medium (~80 tokens), and long (~400 tokens), under an open workload model with 10 concurrent virtual users per model, each sending 6 requests in sequence, real streaming SSE connections, and no mocking. Time to first token and total generation time are captured separately, per the same distinction that makes AI load testing mechanically different from testing a traditional API: response time is not fixed, it's a function of how much the model decides to generate.

  • 20 requests per model per prompt size (180 total), enough to treat percentile figures as meaningful rather than purely directional, though a larger run would still tighten the tails further.
  • Every request's stop reason was captured and verified. This run used a fixed output token cap; on long prompts, Claude Sonnet 5 hit that cap on 8 of 20 requests, producing longer, costlier responses than a naturally-terminated one would. Nothing is hidden in the numbers above: 172/180 requests completed naturally (end_turn), 8/180 hit the cap — all Claude Sonnet 5, long prompts.

Your all-in-one load testing platform

Design complex tests, manage global infrastructure, and turn results into action on one powerful platform.

Need technical references and tutorials?

Minimal features, for local use only