【发布时间】:2017-11-17 16:12:55
【问题描述】:
我在 Windows 10(均为 64 位)上运行 python 3.6,具有快速 SSD、32GB RAM 和非常快的处理器(AMD Threadripper)。我在 Intel i7 上也得到了类似的结果。我正在打开大小约为 5MB 的 XML 文本文件,发现即使使用 lxml 性能也很慢。我将问题归结为磁盘读取性能。如果我加载为二进制文件,速度会快 8 倍以上。以下测试是使用已在磁盘缓存中的文件执行的。在这些运行过程中,磁盘从未被击中。冷读也得到了类似的结果。
%%timeit
with open(xmlpath + fn, 'rb') as f:
r = f.read()
1.66 ms ± 31.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
with open(xmlpath + fn, 'r', encoding='UTF-8') as f:
r = f.read()
13.7 ms ± 32.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
我知道必须为文本版本处理编码,但是在快速处理器上运行时慢 8 倍似乎过度。此外,1.6ms 对我来说读取缓存中已经存在的这么小的文件似乎很慢。使用 Passmark 测量的磁盘性能符合预期 > 2GB/s。
任何意见/建议将不胜感激。谢谢。
【问题讨论】:
标签: python windows python-3.x performance