我是朱莉娅的新手,所以可能做错了什么。但是我对三角函数进行了简单的测试,朱莉娅似乎比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)
第一次调用函数时,朱莉娅对此进行了编译。广播表达式生成和使用匿名功能,因此,如果您在全局范围中广播,则会每次对其进行编译。朱莉娅在功能范围中最有效。