在 CPython 中,我可以使用
lines = f.read().splitlines()
在 11 秒内读取一个 1.6 GB 的文件,而在 PyPy3 中,完全相同的代码需要 2 分钟才能读取该文件。使用 f.read().split('\n')
可以在 1 分钟内完成,但仍然比 CPython 慢很多。我想使用 PyPy 的原因是我稍后在 lines
上执行的循环在 PyPy 中要快得多,但我仍然很好奇为什么 PyPy 在文件 I/O 方面比 CPython 慢,以及我如何可能加快它的速度.
pypy3.10-7.3.13
仍然存在同样的问题。
根据我的个人资料,pypy 中的字符串操作可能会很慢。
例如官方文档中提到了字符串调整大小的性能问题。
https://doc.pypy.org/en/latest/cpython_differences.html#performance-differences
建议使用:
parts = []
for string in mylist:
parts.append(string)
s = "".join(parts)
而不是
str + str
我分析并意识到
str.format
也很慢。
如果代码对大文件进行大量字符串连接,我的建议是不要使用
pypy
。