共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
我要赚赏金
