为什么朱莉娅中的三角函数似乎比numpy慢



我是朱莉娅的新手,所以可能做错了什么。但是我对三角函数进行了简单的测试,朱莉娅似乎比Numpy慢得多。需要一些帮助才能查看原因。

---朱莉娅版本:

x = rand(100000);
y = similar(x);
@time y.=sin.(x);

--- numpy版本:

import numpy
x = numpy.random.rand(100000)
y = numpy.zeros(x.shape)
%timeit y = numpy.sin(x)

Julia版本定期提供1.3〜1.5 ms,但Numpy版本通常给出0.9〜1 ms。差异非常重要。这是为什么?谢谢。

x = rand(100000);
y = similar(x);
f(x,y) = (y.=sin.(x));
@time f(x,y)
@time f(x,y)
@time f(x,y)

给出

julia> @time y.=sin.(x);
  0.123145 seconds (577.97 k allocations: 29.758 MiB, 5.70% gc time)
julia> @time y.=sin.(x);
  0.000515 seconds (6 allocations: 192 bytes)
julia> @time y.=sin.(x);
  0.000512 seconds (6 allocations: 192 bytes)

第一次调用函数时,朱莉娅对此进行了编译。广播表达式生成和使用匿名功能,因此,如果您在全局范围中广播,则会每次对其进行编译。朱莉娅在功能范围中最有效。

最新更新