d如何及为什么探测器
2021/11/21 23:41:21
本文主要是介绍d如何及为什么探测器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
探测器profiler
给定输入,生成程序如何花费时间报告.记住:性能不仅由机器码
主导.可告诉你如何使算法更快.可分析时间/内存/线程竞争
.
程序慢时,要探测
.诊断性能,理解程序.定期基测
,不时探测
,来检查程序.
如何取数据?
采样:中断过程,收集数据
,循环…更快.
VTune
提供检测和跟踪
的API
.
或者,模拟,如Valgrind
.
要测量并保存
数据及位置,保存指针及环境
,因此调用栈更好
采样调用栈
要取指令指针
(易),并可遍历调用栈(难).在X86
上,省略
帧指针可让编译器多用一个寄存器,但损失了调试性.尽量用调试符号分析.
对dmd
用-gs
,对GDC
用-fno-omit-frame-pointer
,对ldc
用--frame-pointer=all
.
在druntime
中的prolog
和epilog
,收集计时
信息,然后退出程序时存储并打印
.输出为trace.log
.
-profile
缺点,对IO 绑定工作负载,调用非根模块函数
不好,配置
文件中只能看到检测函数
.采样调用图
,而非调用栈.仅在函数级
,对函数
成本高.
用dmd
探测分配.对时间
不是很好,但分配
不错.
用-profile=gc
编译.分析堆不必与语言集成,但了解分配的确切类型有帮助.
1,用-profile=gc编译.2,运行.3,检查profilegc.log日志
.
如何呢:
1,低开销,2,采样调用栈,3,分析源码(要求调试信息),4,来自硬件的完整信息,5,跨平台
.
用perf
.林操系统.
perf_event
,测量时间+硬件和软件事件(如页错误)
,作为(分析器,优化器等)的基础
基本方法:perf record -g
收集数据和样本调用栈,-e
启用特定性能计数器.
perf report|perf annotate
.
cpu
提供工具,intel
有vTune
工具,amd/uProf
.
Perf
的源注释工具功能强大且有用,但有点过时了.
Agner Fog
有处理器架构
专著.
帧分析器,用于展示并发性和并行性
.
Coz
,分析多线程代码,计算给定行
影响.
性能计数器,跟踪执行类型,停顿
等统计信息
这篇关于d如何及为什么探测器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南