为什么Julia代码的性能远低于Fortran

  • 本文关键字:Fortran 性能 Julia 代码 julia
  • 更新时间 :
  • 英文 :


我在几个地方读到Julia代码的性能可以(在某些条件下(与Fortran代码的性能进行比较。我在Julia中写了以下代码:

Pi = 3.141592653589793238462643
n = 100000 
function integration_2d(n,Pi,sum)
h = Pi/n
for i=1:n
x = h*(i-0.5)
for j=1:n
y = h*(j-0.5)
sum = sum + cos(x + y)
end
end
sum*h*h
end

平均执行时间为180秒。与使用-O3选项编译的Fortran代码相比,结构非常接近的Fortran代码的执行时间为0.013秒。我想知道Julia代码在哪里失去了性能,欢迎发表评论。谢谢

由于您没有提供Fortran代码,我认为您的代码在Fortran中的实现方式有所不同。您的O(N^2(算法需要具有>每秒10^12次运算(即使使用汇编程序(,我猜你没有使用超级计算机进行测试:(。我们可以用一种需要O(N(性能的方式来实现您的算法。Julia代码看起来是这样的:

function integration_2d(n, sum=0.0)
h = π / n
multiplier = 1
for i = 2:2n
z = h * (i - 0.5)
sum = sum + multiplier * cos(z)
if i <= n
multiplier += 1
else
multiplier -= 1
end
end
sum * h * h
end
julia> @time integration_2d(100000)
0.002846 seconds

Wich在我的笔记本电脑上是0.002846秒(>是你所用Fortran时间的4倍((由于你没有提供Fortran代码,我无法正确比较同一台机器上的性能(

最新更新