1
xdeng 2014-05-07 20:40:52 +08:00
被优化掉了吧
|
2
FarBox 2014-05-07 20:45:41 +08:00
但是,你这段代码,跟你的核数,内存大小,都没有直接的关联呀……
|
3
Ever 2014-05-07 20:45:50 +08:00
windows下面用time.clock()
|
5
min 2014-05-07 20:55:18 +08:00
内存 cpu os 各不相同,硬拉到一起准备做转基因杂交试验么?
|
9
decken OP |
10
cevincheung 2014-05-07 21:19:52 +08:00
所以要升级到python3。 128内存,单核cpu虚拟机0.6s
|
11
decken OP @cevincheung 3不是出了名的慢吗?
|
12
phyng 2014-05-07 21:21:32 +08:00
i3-3110M/8G RAM/SSD/Win 8.1 64bit
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32 ~1.5s Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 bit (AMD64)] on win32 ~1.3s 难道因为我是笔记本= =! 测试表明,Python3性能比Python2好15%? |
14
kemad 2014-05-07 21:22:48 +08:00 via iPhone
看这个代码,用不到多少内存,估计是只跑在一个CPU的一个核,那比的就是cpu主频。
服务器的主频确实有可能比普通台式的低。 你用这个代码来跑测试,意义真不大。 |
15
phyng 2014-05-07 21:26:25 +08:00
我把笔记本从节能模式改成高性能
Python2 ~0.8s Python3 ~0.7s |
16
66CCFF 2014-05-07 21:27:57 +08:00
@decken 改用xrange()的话,linux快了很多。
我的结果:python version 2.7.6 i7 3640qm 8g 内存的机器: range() 0.58s xrange 0.41s linux version 2.7.3 E3 3.3Ghz Ramnode openvz 128m ram range() 0.91s xrange() 0.33s Unknown Xeon 2.3Ghz DigitalOcean Kvm 2G RAM range() 1.2s xrange() 0.8s |
17
66CCFF 2014-05-07 21:30:51 +08:00
顺带一提我的笔记主频一般睿频是到 3.2Ghz。
看起来最后和cpu主频关系确实很大。 |
18
phyng 2014-05-07 21:39:19 +08:00 1
恰恰相反,主机win8 Python2/3 64bit分别要~0.8s ~0.7s,同一台电脑的虚拟机Ubuntu 64bit只需要~0.6s ~0.5s
|
19
lynx 2014-05-07 21:40:07 +08:00
测试代码单线程的,也用不了多少内存
时间的长度跟CPU单核性能有关,其他关系不大 |
20
decken OP |
24
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 |
25
ericls 2014-05-07 22:43:32 +08:00
time()在windows和linux下不一样
|
27
cevincheung 2014-05-07 23:06:51 +08:00
@decken 我是因为,3相对于2来说语法变动略大- -#
|
28
openroc 2014-05-07 23:08:50 +08:00
上pypy吧,
|
29
wenbinwu 2014-05-07 23:11:58 +08:00
process 1.16248011589 seconds
在虚拟机里 ubuntu |
30
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和其他编译器相比甚至微软的,就不多说了 |
31
wy315700 2014-05-08 07:30:59 +08:00
我估计是不同的内存带宽带来的影响
|
32
zxy 2014-05-08 08:18:38 +08:00
第一部 dell 服务器 因为内存的原因说牛逼,我不认为。。
|
33
ericls 2014-05-08 08:49:33 +08:00
i3 1.9Ghz 4G内存 实测
0.408885002136s |
34
ericls 2014-05-08 08:51:28 +08:00
i3 1.9GHz 4G内存 ubuntu 64bit 改用xrange 实测
0.213598012924s |
37
Azone 2014-05-08 09:37:42 +08:00
我的iMac下
range process 0.751209974289 seconds xrange process 0.504092931747 seconds |
38
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 |
39
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. |
41
Ever 2014-05-08 13:42:49 +08:00
@decken 3.3G的I3是2、3代的吧, 那单颗性能差不多是E5335单颗的一倍多, 尤其你这个例子跑在单核上性能差距更大.
|
43
darklowly 2014-05-09 05:28:49 +08:00
这水平,只能写一辈子python了。
|
44
jeeyong 2016-12-04 23:44:14 +08:00
我觉得是主频的问题吧?
另外,如果空循环,其实只是建立了一个很大的列表吧。。 在内存都足够大的情况下,谁建立的更快 就是主频的问题了吧,与核心数没关系。 然后再分析结果的话。 第一台机器,主频快,但是比第二台的结果快的并不明显,我觉得主要问题在于他的内存时 64gb , 在创建列表的时候,内训寻址时间上消耗了一部分。 第三台机器的主频最高,架构差异并没有那么大 而这段代码影响性能的就是 cpu 的主频。 所以第三台机器理所应当的最快 其次第一,然后第二台 一个猜想,如果把第一台机器的内存缩小到 4gb 的话。可能会再快一点。执行结果 以上为第一种猜想 第二种有点扯,但不排除 楼主用的是 time.time().....严格来说这个不准确。 如果某台机器有更多的后台应用占用 cpu 。。。这个结果就没有太大的参考价值了 改用 time.clock() 我常用的测试性能的方法。 s = time.clock() i = 100000000 while i > 0: i -= 1 print s - time.clock() |