Win 与 Linux 下 python 效率问题

2014-05-07 20:36:22 +08:00
 decken
import time

t1 = time.time()
for i in range(10000000):
框框pass
t2 = time.time()
print ("process %s seconds" %(t2 - t1))

这段代码很简单,就是空循环一千万次

在3部不同机器运行,都是python2.7
戴尔服务器,64G内存,8核CPU,操作系统:debian 64bit(挺牛逼的)
运行时间:1.09349584579 seconds

联想服务器,4G内存,双核CPU,操作系统:ubuntu12.04 64bit
运行时间:1.10862994194 seconds

普通PC机,2G内存,I3CPU,操作系统:Win7 64(很屌丝了吧)
运行时间:0.648999929428 seconds

为什么差别这么大呢?这是因为不同平台解析器不同的原因造成的吗?
7916 次点击
所在节点    Python
44 条回复
decken
2014-05-07 22:20:14 +08:00
@glasslion 很多人不喜欢用3的原因不就是因为3的效率比较低吗
kchum
2014-05-07 22:29:37 +08:00
@decken 那是某些库不兼容的缘故。
glasslion
2014-05-07 22:34:30 +08:00
@decken 哪儿听来的? Python3 的benchmark 从来都是 领先于 Python2
clino
2014-05-07 22:36:40 +08:00
我的是双核: Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz
linux python2.7.3
process 0.477319955826 seconds
ericls
2014-05-07 22:43:32 +08:00
time()在windows和linux下不一样
loading
2014-05-07 22:46:26 +08:00
@decken 233
cevincheung
2014-05-07 23:06:51 +08:00
@decken 我是因为,3相对于2来说语法变动略大- -#
openroc
2014-05-07 23:08:50 +08:00
上pypy吧,
wenbinwu
2014-05-07 23:11:58 +08:00
process 1.16248011589 seconds
在虚拟机里 ubuntu
VYSE
2014-05-07 23:19:09 +08:00
其实GCC效率很差的
GCC RANGE:
process 1.03287792206 seconds
GCC XRANGE:
process 0.60715007782 seconds

换ICC版PYTHON
ICC RANGE:
process 0.879615068436 seconds
ICC XRANGE:
process 0.418220996857 seconds

放在同一个CPU下面才有意义,另一个I5 CPU.
WIN ICC PYTHON:
RANGE: process 0.53400015831 seconds
XRANGE: process 0.319999933243 seconds

UBUNTU GCC PYTHON:
RANGE:process 0.702558994293 seconds
XRANGE:process 0.412276983261 seconds

RHEL ICC PYTHON:
RANGE:process 0.522276163101 seconds
XRANGE:process 0.270608901978 seconds

WIN和LINUX实际差距也只在malloc可能会有差距(WIN稍慢)。
那么GCC和其他编译器相比甚至微软的,就不多说了
wy315700
2014-05-08 07:30:59 +08:00
我估计是不同的内存带宽带来的影响
zxy
2014-05-08 08:18:38 +08:00
第一部 dell 服务器 因为内存的原因说牛逼,我不认为。。
ericls
2014-05-08 08:49:33 +08:00
i3 1.9Ghz 4G内存 实测

0.408885002136s
ericls
2014-05-08 08:51:28 +08:00
i3 1.9GHz 4G内存 ubuntu 64bit 改用xrange 实测

0.213598012924s
decken
2014-05-08 09:29:40 +08:00
@zxy CPU是E5335,没怎么见过市面,觉得挺牛逼了.不过相比后面两部来说已经有很大的悬殊了
decken
2014-05-08 09:32:02 +08:00
@VYSE 怎么看是由哪个编译器编译的?
Azone
2014-05-08 09:37:42 +08:00
我的iMac下
range process 0.751209974289 seconds
xrange process 0.504092931747 seconds
v2what
2014-05-08 10:14:56 +08:00
64位kali linux,T5870笔记本Cpu,主频2GHz。

xrange process 0.50718998909 seconds

range process 1.72413301468 seconds
rivershang
2014-05-08 13:04:16 +08:00
64位Ubuntu 14.04,i3 2.4GHz,4G內存:
使用xrange連續運行3次:0.356175899506/0.361744165421/0.356063127518 seconds;
使用range連續運行3次:0.607443809509/0.609739065170.615420103073 seconds.
VYSE
2014-05-08 13:05:37 +08:00
@decken
python/lib/python2.7/_sysconfigdata.py里有当时的编译参数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/111536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX