[C/C++]计算函数执行耗时

(1)函数场景:即一个正常的C++程序,可能会有诉求说看下某几个函数的执行时间,看看到底慢在哪个函数?可以设置一个TimeGuard,里面传入具体的函数名字即可,这种方式通常还可以统计出具体的函数执行次数等信息。由于时间是一个比较相对的概念,通常仅仅给出一个数字是很难直观的发现问题,决策是否慢的,所以通常还可以将得到的数据(比如输出一个性能数据文件),专门放到一个解析器中解析成统计图的方式,便于直观的查看。需要明确的是:①这种时间性能统计是比较“大“的,抽象的统计,通常只能够发现到底问题出现在哪个函数,到底慢在哪个函数执行,如果函数小还好,基本上靠猜测也能够猜到具体是哪些语句的性能影响,但是如果函数很大就比较难以确定(当然确定在哪个函数中这本身已经缩小了范围了)。
(2)这就引入了第三个诉求,即能够在一个函数中的部分,打印出耗时:除了插入一个guard,也应该有对应的begin和end语句,来支持部分的timeguard功能。
(3)以上的三个方法无法最精确的定位,但是基本上能够实现“定位性能瓶颈点”的目的了,不过有一个问题,这种方式必须有源码,能编译源码才行,否则无法在代码中插桩的。如果没有代码?可以引入hook机制?类似于gdb的功能,这个有点用正则匹配解析还是用clang解析的区别了,前面只是解决功能问题,后面才是真正的需要的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值