剖析程式碼
Julia 附帶自己的 採樣剖析器,用於衡量函式中花費的 CPU 時間,或是配置的數量和大小。有 各種套件 可以視覺化這些剖析軌跡。
VS Code 擴充功能附帶了有用的巨集 @profview
和 @profview_allocs
來執行這些剖析器,且有自己的剖析檢視器。剖析 ProfileView.jl 說明文件 中範例函式
function profile_test(n)
for i = 1:n
A = randn(100,100,20)
m = maximum(A)
Am = mapslices(sum, A; dims=2)
B = A[:,:,5]
Bsort = mapslices(sort, B; dims=1)
b = rand(100)
C = B.*b
end
end
# compilation
@profview profile_test(1)
# pure runtime
@profview profile_test(10)
會顯示一個火焰圖表和內嵌註解:
按一下火焰圖表的任何元素,將會縮放該元素;按兩下背景 (或使用右上方的「重設檢視」按鈕) 會復原初始檢視。按著 Ctrl 按一下來開啟參考檔案。
工具提示會告訴您在特定框架中收集到的樣本數,以及最頂層顯示框架的百分比。這裡有一些關於特殊旗標的試探法,例如垃圾回收、動態派送,等等 (這些也被加上顏色代碼)。
內嵌檢視會顯示父框架樣本有多少來自同一行 (以及上述旗標,當您將滑鼠游標移到內嵌註解開頭時)
配置剖析器的運作方式類似,但會向您顯示配置數或配置大小,而非函式中花費的時間
@profview_allocs profile_test(10) sample_rate=0.1
火焰圖表後方的選單可讓您在配置數量和大小之間切換。
請注意,可選引數 sample_rate
可用來調整收集的樣本數。採樣率 1.0 將記錄所有內容;0.0 將不記錄任何內容。請小心使用,因為大值可能會顯著減慢您的程式碼速度。預設值為 0.0001;如果您知道配置正在發生,但沒有看到有用的資訊,請逐漸增加此值。