Claude 真的比GPT更快么?个人数据分享

我切换到ChatGPT和Claude双持有一段时间了。我看大家普遍的反应是claude比GPT快。从tokens输出速度来看确实是这样。GPT也就是45 tokens/s, opus 应该在90左右。但是真的完成任务的效率上区别很大么?我让他们两个自己总结了一下每个任务的E2E的时间,就是我的指令发出到最后一个token输出完成。首先要说明的是他们两个拿到的任务类别还真的差不多。除开第一天claude用来设置以外剩下的时间我基本上是混着用。甚至很多时候回跟他们两个讨论同一个问题对比成果。
GPT (Astra 为主,extra-high 和 high混用):

使用模型:

Claude (Opus 为主,extra-high 和 high混用):


使用模型:

可以看到从各个角度来说claude都更快一点。

2 个赞

如果有兴趣可以让自己的agent也分析一下:

prompt

Measure the end-to-end (E2E) latency of my top-level Claude Code chat turns from the local transcripts, and summarize which models and reasoning effort levels I use. Read the files only; don’t modify anything, and don’t print any prompt text.

Data

  • Use the session transcripts at ~/.claude/projects//.jsonl, one JSON record per line. Skip lines that fail to parse.
  • Exclude everything under *//subagents/ (subagent transcripts).
  • Exclude the transcript of the session you are running in. Its turns are still in progress.

Turn definition (per session file, records in file order)

  • A turn starts at a record with type == “user” that has an “origin” field and is not a tool result (a tool result is a user record whose message.content is a list containing an item with type == “tool_result”).
  • Only count turns where origin.kind == “human”. Exclude other kinds such as “peer” (subagent hand-backs) and “task-notification”.
  • Also exclude turns whose prompt text, after stripping leading whitespace, starts with “”. These are sessions spawned by another session, not typed by a person.
  • If a file has no user records with an “origin” field (older versions), use instead user records whose message.content is a string, with isMeta not true and not a tool result. Count all of these as human turns.
  • A turn runs until the next turn-start record of any origin kind, or the end of the file.
  • Turn start = the prompt record’s timestamp. Turn end = the latest timestamp of any type == “assistant” record in the turn. Skip turns with no assistant records.
  • E2E = end − start, in seconds.

Waiting on the user

  • Inside each turn, find tool_use blocks named AskUserQuestion, ExitPlanMode or EnterPlanMode in assistant message.content.
  • Each interval runs from that assistant record’s timestamp to the timestamp of the user record holding the matching tool_result (same tool_use_id), clipped to the turn end.
  • Merge overlapping intervals, then compute E2E excluding the wait = E2E − the merged total.

Model and effort per turn

  • Group the turn’s assistant records into API calls by requestId (fall back to message.id).
  • The model of a call is message.model. Its effort is the assistant record’s top-level “effort” field, or “unset” if missing.
  • Label the turn with the most common model and the most common effort among its calls. Also report how many turns mixed models or efforts.

Statistics

  • For each group, report the number of turns, its share of all turns, the mean, and percentiles P50, P90 and P99.
  • Percentile method: sort the values and take index round(p/100 * (n−1)), with no interpolation.
  • Timestamps are ISO 8601 with a trailing Z.

Output
Markdown tables, in seconds with one decimal place. Each has the columns:
| Scope | Turns | Share | Mean (s) | Median (s) | P90 (s) | P99 (s) |

  1. Overall: “Top-level chat turns” (E2E), and “Same, minus time waiting on your answers”
  2. By model (E2E)
  3. By effort (E2E)
  4. By model and effort combination (E2E)

Sort the rows in tables 2–4 by turn count, highest first. Below the tables, add one line with the number of sessions counted, the date range of the turns, the Claude Code version range seen in the records’ “version” field, and the number of mixed-model or mixed-effort turns.

不是不想用claude,主要它恶心啊,设置好了环境,封号还是看运气 :rofl:

其实很大一部分是Codex的Harness不行, 把opus接进Codex照样被拖慢