为何Python与NumPy随机数生成器的性能测试结果存在冲突?
Python & NumPy随机数生成库的性能跨机器差异分析
最近我在Code-Review平台上发起了一个关于Python和NumPy随机数生成工具的性能对比分析问题。最开始我想当然地认为,不同机器上的性能数值虽然会有差异,但整体的快慢结论应该是统一的——比如工具A肯定比工具B快这类的结论。但实际测试下来,情况完全不是我预想的那样。
Oscar Smith的测试结果
Oscar Smith针对这个问题完成了独立测试,他的运行环境配置如下:
- 操作系统:Ubuntu
- Python版本:2.7 和 3.6
- NumPy版本:1.14.1
他的测试结果显示,在这套环境下,部分随机数生成工具的性能排序和我本地测试的结果完全相反。比如在他的机器上numpy.random.rand()的生成速度比Python标准库的random.random()快近2倍,但在我的测试环境里,两者的性能差距只有不到30%。
我的测试补充
我也在自己的环境里做了相同的测试,测试过程中发现:
- 硬件架构的差异(比如Intel vs AMD处理器)对生成速度影响很大
- Python版本和NumPy的编译方式(是否用了MKL优化)也会导致性能波动
- 甚至同一台机器上,不同的进程优先级也会让测试结果出现小幅偏差
这让我意识到,随机数生成库的性能表现不能一概而论,必须结合具体的运行环境来评估,不能直接照搬其他机器上的结论。
内容的提问来源于stack exchange,提问作者Drise
相关产品推荐
相关产品推荐

