You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.11性能不如3.10?字符串拼接测试出现百倍耗时差异

Python 3.10与3.11字符串循环拼接的性能差因解析

测试代码与结果

测试代码如下:

import time
a = 'a'

start = time.time()
for _ in range(1000000):
    a += 'a'
end = time.time()

print(a[:5], (end-start) * 1000)

在Windows 10系统上的测试数据:

  • Python 3.10.7:仅需约187ms完成
  • Python 3.11.0:耗时高达约17000ms

差异的核心原因

你的猜测完全正确——Python 3.10的字节码编译器实现了死代码消除优化:它检测到循环里的字符串拼接操作,最终只需要用到a的前5个字符,后续的拼接结果根本不会被实际使用,于是直接跳过了绝大多数循环内的拼接逻辑,只生成满足a[:5]需求的字符串长度即可。

而Python 3.11在这个场景下没有启用相同的优化,它会老老实实执行完100万次字符串拼接。由于Python的字符串是不可变类型,每次a += 'a'都会创建新的字符串对象,百万次操作会带来海量的内存分配和数据拷贝开销,这就是3.11耗时暴增的关键原因。

验证说明

该性能差异已通过汇编代码对比验证,3.10的字节码确实省略了大量无效的拼接操作,3.11则保留了完整的循环执行流程。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:55:14