Codex Subscription Token Rate
Given my subscription usage, Astra is difficult to use as my main model. But GPT-6.1 Sol also felt slower than I expected, so I ran a small comparison. I gave several models the same task and calculated their token generation speeds from the session logs.
How I measured it
I used the same prompt for every run:
This is a controlled model-speed benchmark. Do not use any tools, do not inspect the repository, and do not modify files. Produce exactly 120 numbered items describing distinct failure-mode test cases for a distributed job queue. Each item must be exactly one English sentence of 18 to 28 words and must include: the triggering condition, the expected behavior, and one observable assertion. Do not add an introduction, conclusion, headings, or any text outside the 120 numbered items.
TTFT is the time to the first token. I calculated the rate of visible token generation as:
(output tokens − reasoning output tokens) ÷ (completion time − TTFT)
This rate describes the average speed of visible output after the first token. It is different from output tokens divided by the full completion time.
Sol at medium effort
| Model | TTFT | Completion time | Visible tokens | Visible generation rate |
|---|---|---|---|---|
gpt-6-sol |
6.759 s | 41.635 s | 3,199 | 91.72 tok/s |
gpt-5.6-sol |
6.199 s | 42.811 s | 3,162 | 86.37 tok/s |
gpt-6.1-sol |
7.038 s | 80.531 s | 3,236 | 44.03 tok/s |
In this run, gpt-6-sol generated visible tokens about 2.08 times as fast as gpt-6.1-sol. gpt-5.6-sol produced the first token soonest, while gpt-6-sol finished the task first. The gpt-6.1-sol result was consistent with my impression that it felt slow, though it is only one run of one task.
Sol at high effort
| Model | TTFT | Completion time | Visible tokens | Visible generation rate |
|---|---|---|---|---|
gpt-6-sol |
8.116 s | 42.870 s | 3,233 | 93.03 tok/s |
gpt-5.6-sol |
7.063 s | 41.916 s | 3,094 | 88.77 tok/s |
gpt-6.1-sol |
9.675 s | 82.776 s | 3,330 | 45.55 tok/s |
The ranking by visible generation rate was the same at high effort: gpt-6-sol was fastest, and gpt-6.1-sol ran at roughly half its rate. Yet gpt-5.6-sol had the shortest completion time, at 41.916 seconds. Generation rate and time to finish the whole task tell slightly different stories.
For each Sol model, the visible generation rate changed little between medium and high effort in these runs. TTFT increased for all three. Input caching was not applied to the gpt-5.6-sol high-effort run, however, so the TTFT difference cannot be attributed solely to the effort setting.
Luna at xhigh effort
| Model | TTFT | Completion time | Visible tokens | Reasoning tokens | Visible generation rate |
|---|---|---|---|---|---|
gpt-5.6-luna |
4.739 s | 37.084 s | 2,922 | 1,396 | 90.34 tok/s |
gpt-6-luna |
8.298 s | 63.097 s | 3,258 | 4,870 | 59.45 tok/s |
In these measurements, gpt-5.6-luna generated visible tokens about 1.52 times as fast and finished sooner. gpt-6-luna used 4,870 reasoning tokens, compared with 1,396 for gpt-5.6-luna. That shows a difference in their recorded output, but this single measurement does not establish how much of the completion-time gap it caused.
The first gpt-5.6-luna run finished in 29.273 seconds, but it did not produce the JSONL log needed to calculate its token rate. The table uses a separate run that finished in 37.084 seconds and had a usable log.
Limits of this comparison
Each reported configuration has one logged measurement. Temporary server conditions and other differences between runs could affect the results, so these numbers should not be treated as fixed speeds. The Luna table also combines gpt-6-luna with a separate rerun of gpt-5.6-luna, rather than two results from the same simultaneous pair.
The prompt asked for a long output of 120 items. These results describe response speed on that task. They do not show whether the ranking would hold for other tasks or output lengths, and they do not evaluate the quality of the generated test cases.