I have this simple python
code:
import numpy as np
a = np.array([1,2,3,4,5,6])
print a
如果我在sublime text
上一遍又一遍地运行它,使用(cmd+B)
,每次它的输出结果[1 2 3 4 5 6]
都会更快地打印出来,时间如下(秒):
1st run: [Finished in 7.7s]
2nd run: [Finished in 1.6s]
3rd run: [Finished in 0.5s]
然后它稳定在0.5秒
,对于这样一个简单的程序来说,速度相当慢。
因此,我尝试计时,并得到以下结果:
[1 2 3 4 5 6]
0.00280284881592
[Finished in 7.4s]
[1 2 3 4 5 6]
0.00325489044189
[Finished in 2.0s]
[1 2 3 4 5 6]
0.000813961029053
[Finished in 0.1s]
进一步测试,我计时了绕过包导入的代码:
a = [1,2,3,4,5,6];
print(a)
并获得了:
[1, 2, 3, 4, 5, 6]
0.000219106674194
[Finished in 1.4s]
最后,使用numpy
:
import numpy as np
a = np.array([1,2,3,4,5,6])
a=1
I got:
1.2614569664
[Finished in 2.5s]
计算机内存出现了什么问题,导致程序表现出这样的行为?
import
和/或I/O操作(如print
)的时间都应该小心处理,因为你不知道Python是否需要为包创建字节码,或者是否有任何东西拦截/暂时阻止了print
的输出。特别是如果你使用像sublime text
这样的编辑器,实际的编辑器可能会引入一些额外的偏移量(例如启动Python内核)。有趣的是将时间与a = [1,2,3,4,5,6]; print(a)
和import numpy; a = np.array([1,2,3,4,5,6])
以及简单的a = 1
进行比较,以获取时间的各个组成部分。 - MSeifert