2019年2月20日 星期三

Julia 語言 @time 測量程式花費的時間。

Julia 語言 @time 測量程式花費的時間。


Julia 設計之初就重點考慮了速度, 它的快很大程度上來源於 LLVM, JIT 以及類型設計。 Julia 有類型推斷,編譯的時候會根據不同 type 生成不同的特定代碼,叫 code specialization,然後運行的時候會根據參數類型選擇最適合的方法,即 Multiple dispatch
性能分析工具
沒有分析的優化都是耍流氓!
性能分析工具主要有如下幾個:
@time
@time sqrt.(rand(1000));
輸出結果:
julia> @time sqrt.(rand(1000));
  0.057799 seconds (187.82 k allocations: 9.542 MiB, 9.82% gc time)

julia> @time sqrt.(rand(1000));
  0.000022 seconds (8 allocations: 16.063 KiB)
這裡;是為了不輸入結果值。 因為rand(1000)返回的是一個 vector sqrt.即可作用於 vector 中的每一個元素, 類似 numpy 中的 broadcast 吧。


function Trapezoid(f,N)

    dk = 2π/(N-1)
    fsum = 0
    for i=1:N
        k = (i-1)*dk - π
        fsum += f(k)
    end
    fsum /= N
    return fsum
end

f(x) = sin(x) + x^2
N = 400

@time fsum = daikei(f,N)
exact = ((π)^3/3 -(-π)^3/3)/(2π)
println("梯形法 $fsum, 真實值 $exact")

輸出結果
0.019191 seconds (39.88 k allocations: 2.101 MiB)
梯形法 3.3063587007826505, 真實值 3.2898681336964524



您現在可以測量在該功能上花費的時間。



沒有留言:

張貼留言

113 學年度第 1 學期 RFID應用課程 Arduino程式

113 學年度第 1 學期 RFID應用課程 Arduino程式 https://www.mediafire.com/file/zr0h0p3iosq12jw/MFRC522+(2).7z/file 內含修改過後的 MFRC522 程式庫 (原程式有錯誤) //定義MFRC522...