Julia性能分析工具有哪些
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,Julia性能分析工具有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。性能分析工具简介学习 Julia 语言的一个主
千家信息网最后更新 2025年01月31日Julia性能分析工具有哪些
Julia性能分析工具有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
性能分析工具简介
学习 Julia 语言的一个主要原因是看中它的高效率,那么我们怎么才能知道自己写的代码的性能呢?今天我们来看看关于 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定义测试函数
我们先定义一个函数,高斯分布的概率密度函数,用来测试下面的性能分析代码。
常量
Base.@irrational sqrt2π 2.5066282746310005024 sqrt(big(π) * 2.0)
Base.@irrational invsqrt2π 0.3989422804014326779 inv(big(sqrt2π))
正态曲线
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` 是查看运行时间的最简单方法
@time norm_pdf(x);
0.000411 seconds (17 allocations: 469.406 KiB)
Julia 是 Just-In-Time(JIT)编译型语言,即每个语句都是使用编译后的机器代码运行的。
这意味着,如果测算了首次运行的 Julia 代码运行时间,其实它包括了编译此代码所需的时间(和内存使用情况)。
因此,要查看一段 Julia 代码的运行时间,应该在使用下面的分析代码之前至少先运行代码一次。
# 首次运行代码时 Julia 会编译代码,时间会长一些,因此从第二次开始计时
# 比如第一次运行耗时为
0.034050 seconds (72.64 k allocations: 3.861 MiB)
# 第二次运行耗时为
0.000441 seconds (19 allocations: 469.406 KiB)
# `@timev` 的功能比 @time 增加了内存分配。
@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` 直接返回运行时间。
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 返回最小时间和内存分配。
@btime norm_pdf(x);
118.484 μs (13 allocations: 469.25 KiB)
# @elapsed 返回最小时间,以秒为单位的。
@belapsed norm_pdf(x)
0.000118526
好了,以后写代码时我们会经常用到这些工具,比如 BenchmarkTools
,时不时查验一下自己代码的性能,用于比较或改进。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
代码
运行
时间
性能
分析
性能分析
编译
内存
函数
工具
最小
更多
语言
面的
分配
学习
帮助
测试
清楚
会长
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
幼儿园网络安全知识内容
潍坊java软件开发
数据库设计讲课视频
围绕网络安全教育
计算机网络技术必看书籍
软件开发小程序聚顶科技专业
数据库开发需要多久
办税大厅网络安全应急预案
gp数据库怎么查看磁盘空间
外卖数据库代码
cod16选哪个服务器延迟小
大话2情系今生服务器
网络安全等级保护专家多少钱
联想超融合服务器 aio
数据库可以同时有几个连接
服务器电源维修方法
扫码枪软件开发
网络安全保护制度表
企业邮箱的服务器是网址吗
湖南欧博泰克互联网科技学院
宽带远端服务器无响应怎么回事
数据库技术与应用 知识框架
软件开发侵权是什么意思
软件开发是实现()的概念
专利中的计算机与网络技术
软件开发工程师dengji
阿里巴巴网络安全主席
贵州百宝箱网络技术有限公司
配置管理打印服务器
升级bios连不上服务器