共10条
1/1 1 跳转至页
[求助]tornado编程中如何计算一段代码的运行时间?

个人认为计算运行时间比较麻烦的地方在于时间的刻度,在vxWorks里面能够提供的最小刻度是tick,这个时间刻度对于代码的运行显然太大了,我们在做代码优化的时候也曾经做过计算代码运行时间的工作,使用的是tick + dec,tick不用细说了,一般10毫秒一个,dec是ppc类型的cpu都有的一个中断,一般是一个16或32位的寄存器,根据板内时钟计算得到一个值,这个值递减到0刚刚好是一个tick。可以在需要计算的代码执行前记录一个tick值和一个dec值,在代码执行完后再计算一次,两次的结果都换算成dec的中断数然后相减,换算一下得到时间。
对于ARM和Mips没有dec寄存器,但是总要为vxWorks提供tick时钟的,一般使用定时器模拟,定时器的即时值能读出来的,就使用这个值,如果不能读出来就麻烦了。我用过一款arm的cpu型号是ks8695,里面的定时器不能读取即时值,后来在单板上加了一个逻辑芯片自己做了一个时钟计算代码效率。

中断不可取,1ms的时间刻度太大了,没有办法度量函数的执行,中断太频繁cpu的占用率会大量增加,另外中断在每个tick内10次的压栈出栈操作会让测出来的时间不准确。
我最近看了风河的scopetools,感觉用来测试内存、函数都不错,profileScope用来测试任务和函数的占用率,它的原理是用不与系统时钟同步的另一个时钟定期采样,测到的是一个近乎平均的值,可以用在满负荷的时候测试函数的运行,避免了单次测试的偶然性。
MemScope用了动态对内存申请释放函数打补丁的方法,用于监控内存,可以分析到哪个任务的哪个函数具体第几行申请了内存以及是否释放,查内存泄漏很方便。
共10条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano被打赏23分 |