Ich bin ein Neuling auf Julia. Führen Sie den folgenden Code:Warum Julia ist sehr langsam für die erste Bewertung?
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)
Dann habe ich so etwas wie dieses:
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
Warum der erste Aufruf von entweder Matrixmultiplikation oder Auswertung von Determinante ist extrem langsam? Wie vermeide ich das?
Das erste Mal kompiliert die Funktion. Wenn Sie das alles in eine größere Funktion bringen, wird es nur einmal kompiliert. Wenn etwas von beträchtlicher Länge ausgeführt wird, ist dies nicht wirklich wichtig, da der erste Anruf nur einer von vielen ist. Für Paketfunktionen können Sie sie vorkompilieren und die vorkompilierten Versionen speichern. –
X-Ref: '@ btime' in [BenchmarkTools.jl] (https://github.com/JuliaCI/BenchmarkTools.jl). – Gnimuc