我修改了一个简单的程序来计算和绘制Julia的运动涡度来测试语言,我也用Python编写它没有特别的原因。
(免责声明:1.我阅读的每个性能比较stackoverflow被淹没不全面/正确/写好/相关等等 – 我不是假装这是一个真正的比较,我只想知道如何做Julia更快2.我知道python可以被优化,在Cython中实现,这不是这个讨论的一部分,它只是在这里参考Julia和Python中的等效功能。)
代码和性能结果可以看出in a gist。
Julia的表现要比Fortran慢得多。执行计算所用的时间是(50000个时间步长):
Fortran: 0.051s
Julia: 2.256s
Python: 30.846s
朱利娅比Fortran慢得多(约44倍),差距缩小,但仍然有10倍的时间步长(0.50s vs 15.24s)。
这些结果与the julia home page上显示的结果大不相同。我做错了什么?我可以修复朱莉娅明显更快吗?
我已经阅读了Julia Performance Tips页面和比较茱莉亚主页后面的代码,没有什么是我来解决的。
还有趣的是,Julia加载PyPlot非常慢(5秒Ish !!),比Python慢得多的文本文件。我可以做任何改进这些事情吗?
请注意,上面的时间并没有显示Julia和Python的加载时间,只是计算AFAIK所需的时间 – 参见代码。对于fortran,这是整个事情。在每种情况下,绘图已经关闭,大致可以进行速度比较。
计算机:Intel i7-3770,16GB RAM,SSD HD,操作系统:Ubuntu 13.10 64位,Fortran:gfortran,GNU Fortran(Ubuntu / Linaro 4.8.1-10ubuntu9)4.8.1,Julia:Version 0.3.0-prerelease 396( 2013-12-12 00:18 UTC),提交c5364db *(0天大师),x86_64-linux-gnu,Python:2.7.5
更新:
基于ivarne的建议,我重写了Julia脚本(以上更新):将grunt工作封装在函数中,声明一切的类型,并将矩阵的不同元素分割成不同的数组(如适用)。 (我在很多地方添加了Float64,因为我尝试了Float32看看是否有帮助,大部分时间没有)。
结果如下:
50,000个时间步长:
Fortran: 0.051s (entire programme)
Julia: raw calc.: 0.201s, calc. and return (?): 0.758s, total exec.: 6.947s
50万次步骤:
Fortran: 0.495s (entire programme)
Julia: raw calc.: 1.547s, calc. and return (?): 2.094s, total exec.: 8.521s
结论是:
你可以加快朱莉娅的速度。
>您可以显着影响Julia的速度,具体取决于您如何衡量其性能。