请问怎么计算C语言中的运行时间?
如果用汇编,知道某条指令需要几个机器周期,然后很好计算一个指令的运行时间。但如果用C的话,怎么计算?
例如
void delay(uint us)
{
while(us--){}
}
这个延时怎么计算? C文件编译会产生lss汇编文件,对着查找汇编代码,自己算
我就是这么干的 用AVUSTUDIO看 不愿看代码,也可以看示波器 有这么灵敏的示波器吗?可以看到微秒? 各位好,正如一樓大俠所說,這個應該與編譯器有關,就KEIL 來說,一個增量應該是8微杪 启动软件仿真然后把汇编代码展开就行了,就是上方那个有个小眼镜看书的图标.不启动软件仿真的话那个图标是看不到的.自已对着汇编一条一条相加算时间.另外还有个懒办法,就是仿真时看左边框里那个"sys"中的"states"值,那个值就是周期数.它的下方是秒数.你需要哪个用哪个. 可以看对应的汇编代码,或是用示波器
二种方法我都做过,哈哈
用示波器就是执行N条相同代码后取反某个端口,N可以取大一点以求平均值
./emotion/em020.gif./emotion/em020.gif 有这么灵敏的示波器吗?可以看到微秒?
我经常拿示波器来测us级别的信号的,呵呵 进入调试状态后,窗口左侧其中有一项是sec,统计从开始执行到目前为止用去的时间。在延时程序的入口和出口各设一个断点,运行,记下入口和出口的sec值,两者相减其差值为延时值。 我一般都用9楼的方法。方便。 还没用过九楼这招呢,惭愧呀。。
不过现在学会了./emotion/em018.gif./emotion/em018.gif 在调用前打开定时器,调用后关闭定时器。也可以知道时间啊 9楼的方法比较好! 在需要测量程序的开始和结尾处置标志位,这个标志和IO输出联系起来,通过示波器测量程序运行时间,很准确。 用示波器或软件仿真模式都可以得到软件运行时间。汇编语言计算的方法太累人。
页:
[1]