【问题标题】:How much faster is Python 2.7's new IO library compared to earlier versions?与早期版本相比,Python 2.7 的新 IO 库快了多少?
【发布时间】:2011-03-25 16:25:56
【问题描述】:

Python 2.7 update note 说:

新版本的 io 库,用 C 重写以提高性能。

我用过一点 Python 2.7,但我没有看到任何性能提升:

>>> from timeit import Timer
>>> t = Timer('f = open("E:\\db.txt", "r"); f.read(); f.close()')
>>> t.timeit(10000)

结果:

  • Python 2.6.5 -- 12.879124022745913
  • Python 2.7 -- 12.905614540395504

我做错了吗?

【问题讨论】:

  • 逐行和逐字符尝试测试以获得更多变化。
  • 嗯。我尝试了一些东西,Py3k 通常要慢两个数量级。 /我/困惑/
  • 你用的是哪个版本的py3k?

标签: python io python-2.7


【解决方案1】:

如果你查看http://docs.python.org/library/io.htmlio 模块中的open() 方法默认不用于在 python 2.x 中打开文件。只有在 python 3.x 中,open() 才使用 io.open()

试试:

from timeit import Timer
t = Timer('f = io.open("E:\\db.txt", "r"); f.read(); f.close()', 'import io')
t.timeit(10000)

【讨论】:

  • 糟糕,我正在查看 Python 3.2 文档。看来我也看错了句子。它是 Python 3 IO 库(使用 Unicode 作为默认编解码器)已向后移植到 Python 2.7。 Python 2.x 中的默认 IO 已经用 C 语言编写并且具有不错的性能。
  • >>>t = Timer('f = io.open("E:\\db.txt", "r"); f.read(); f.close()', 'import io') --> 我得到 30.724059342737746,类似于 Python 3.x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
相关资源
最近更新 更多