真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Julia性能分析工具有哪些

Julia性能分析工具有哪些,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)是一家專業(yè)提供華鎣企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為華鎣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

性能分析工具簡(jiǎn)介

學(xué)習(xí) Julia 語言的一個(gè)主要原因是看中它的高效率,那么我們?cè)趺床拍苤雷约簩懙拇a的性能呢?今天我們來看看關(guān)于 Julia 代碼性能分析的一些工具。

# 先看一下 Julia 版本
versioninfo()
 
Julia Version 1.0.5
 Commit 3af96bcefc (2019-09-09 19:06 UTC)
Platform Info:
 OS: Linux (x86_64-pc-linux-gnu)
 CPU: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-6.0.0 (ORCJIT, skylake)
Environment:
 JULIA_PARDISO = /home/ubuntu/Pardiso
   

1定義測(cè)試函數(shù)

我們先定義一個(gè)函數(shù),高斯分布的概率密度函數(shù),用來測(cè)試下面的性能分析代碼。

 

常量

Base.@irrational sqrt2π    2.5066282746310005024 sqrt(big(π) * 2.0)
Base.@irrational invsqrt2π 0.3989422804014326779 inv(big(sqrt2π))
   

正態(tài)曲線

function norm_pdf(x::Array{Float64,1};μ=0.0,σ=1.0)
   exp.(-(x.-μ).^2/2σ)*invsqrt2π/σ
end
 
norm_pdf (generic function with 1 method)
 
x = 10rand(10000).-5
a = norm_pdf(x)
min(a...), max(a...)
 
(1.4871534608097617e-6, 0.3989417980536153)
   

2用于性能分析的宏

# `@time` 是查看運(yùn)行時(shí)間的最簡(jiǎn)單方法
@time norm_pdf(x);
 
  0.000411 seconds (17 allocations: 469.406 KiB)
 

Julia 是 Just-In-Time(JIT)編譯型語言,即每個(gè)語句都是使用編譯后的機(jī)器代碼運(yùn)行的。

這意味著,如果測(cè)算了首次運(yùn)行的 Julia 代碼運(yùn)行時(shí)間,其實(shí)它包括了編譯此代碼所需的時(shí)間(和內(nèi)存使用情況)。

因此,要查看一段 Julia 代碼的運(yùn)行時(shí)間,應(yīng)該在使用下面的分析代碼之前至少先運(yùn)行代碼一次。

# 首次運(yùn)行代碼時(shí) Julia 會(huì)編譯代碼,時(shí)間會(huì)長(zhǎng)一些,因此從第二次開始計(jì)時(shí)
# 比如第一次運(yùn)行耗時(shí)為
0.034050 seconds (72.64 k allocations: 3.861 MiB)
# 第二次運(yùn)行耗時(shí)為
0.000441 seconds (19 allocations: 469.406 KiB)
 
# `@timev` 的功能比 @time 增加了內(nèi)存分配。
@timev norm_pdf(x);
 
0.000398 seconds (17 allocations: 469.406 KiB)
elapsed time (ns): 398107
bytes allocated:   480672
pool allocs:       11
malloc() calls:    6
 
# `@elapsed` 直接返回運(yùn)行時(shí)間。
t = @elapsed norm_pdf(x)
 
0.000442561
 
# 使用 BenchmarkTools 包顯示更多信息。
using BenchmarkTools
@benchmark norm_pdf(x)
 
BenchmarkTools.Trial:
 memory estimate:  469.25 KiB
 allocs estimate:  13
 --------------
 minimum time:     117.534 μs (0.00% GC)
 median time:      120.906 μs (0.00% GC)
 mean time:        134.234 μs (9.14% GC)
 maximum time:     40.077 ms (99.66% GC)
 --------------
 samples:          10000
 evals/sample:     1
 
# @btime 返回最小時(shí)間和內(nèi)存分配。
@btime norm_pdf(x);
 
  118.484 μs (13 allocations: 469.25 KiB)
 
# @elapsed 返回最小時(shí)間,以秒為單位的。
@belapsed norm_pdf(x)
 
0.000118526
 

好了,以后寫代碼時(shí)我們會(huì)經(jīng)常用到這些工具,比如 BenchmarkTools,時(shí)不時(shí)查驗(yàn)一下自己代碼的性能,用于比較或改進(jìn)。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)頁標(biāo)題:Julia性能分析工具有哪些
文章出自:http://weahome.cn/article/psieos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部