所以,今天我决定尝试朱莉娅,我遇到了一些奇怪的事情,我无法理解其原因,也没有找到适合我的搜索查询的答案,所以我在这里......
首先,我想要对Python进行基准测试,我决定使用非常简单的代码。
def test():
start = time()
a = 1
while a < 10000000:
a+=1
print(time() - start)
在我的机器上用Python 3.3执行大约需要0.9秒。然后我在Julia中运行了以下内容。
start = time()
a = 1
while a < 10000000
a+=1
end
print(time() - start)
执行 ~0.7s 。所以我得出结论,Julia中的简单算术性能是〜= Python。
然而,当我把它变成一个函数时,我偶然发现了我并不期待的那种将我的结果转化为头脑的怪异。
function test_arithmetic()
start = time()
a = 1
while a < 10000000
a+=1
end
print(time() - start)
end
test_arithmetic()
此代码段只执行 ~0.1s ,为什么会这样?
答案 0 :(得分:7)
原因是全局变量可以在任何时候更改其类型,这使编译器难以优化。这在Performance Tips section of the manual中提到。
答案 1 :(得分:3)
我找到了答案,它与如何比全局变量更快地存储局部变量有关。
可以找到Python的同等问题(这导致我测试是否适用于Julia) here 。
事实证明,此代码段也在 ~0.7s 中运行。
function test_arithmetic()
start = time()
global a = 1
while a < 10000000
a+=1
end
print(time() - start)
end
test_arithmetic()