2017-08-17 76 views
1

我是朱莉婭的新手。運行下面的代碼:爲什麼朱莉婭第一次評估很慢?

const size = 100 
@time A = rand(size, size) * rand(size, size) 
@time B = rand(size, size) * rand(size, size) 
@time a = det(A) 
@time b = det(B) 

print(a, "\n", b) 

然後我得到的是這樣的:

0.825584 seconds (259.77 k allocations: 13.101 MiB) 
    0.000248 seconds (11 allocations: 234.813 KiB) 
    0.297366 seconds (44.59 k allocations: 2.591 MiB) 
    0.012814 seconds (12 allocations: 79.375 KiB) 
-9.712788203190892e49 
-5.471097050756647e49 

爲什麼無論矩陣乘法或行列式的評價首先調用的是極其緩慢?如何避免這種情況?

+1

它第一次編譯函數。如果你把這一切放在更大的功能,它只會編譯一次。當運行相當長度的任何事情時,這並不重要,因爲第一個電話只是其中的一個。對於包函數,您可以預編譯它們並存儲預編譯版本。 –

+0

X-ref:[BenchmarkTools.jl](https://github.com/JuliaCI/BenchmarkTools.jl)中的'@ btime'。 – Gnimuc

回答

0

您不能相信全球範圍內變量的計時結果。嘗試將它放入一個函數並再次運行。另外,第一次運行它將會編譯的函數,這將需要一些時間。