applezhm 发表于 2007-11-13 10:16:11

请问怎么计算C语言中的运行时间?

如果用汇编,知道某条指令需要几个机器周期,然后很好计算一个指令的运行时间。
但如果用C的话,怎么计算?
例如
void delay(uint us)
{
while(us--){}
}
这个延时怎么计算?

usbfish 发表于 2007-11-13 11:40:12

C文件编译会产生lss汇编文件,对着查找汇编代码,自己算
我就是这么干的

zbhrose 发表于 2007-11-13 11:41:46

用AVUSTUDIO看

dgdzov 发表于 2007-11-13 15:53:24

不愿看代码,也可以看示波器

applezhm 发表于 2007-11-13 17:10:32

有这么灵敏的示波器吗?可以看到微秒?

LUOWEN33 发表于 2007-11-26 15:07:36

各位好,正如一樓大俠所說,這個應該與編譯器有關,就KEIL 來說,一個增量應該是8微杪

rainyss 发表于 2007-11-29 00:27:12

启动软件仿真然后把汇编代码展开就行了,就是上方那个有个小眼镜看书的图标.不启动软件仿真的话那个图标是看不到的.自已对着汇编一条一条相加算时间.另外还有个懒办法,就是仿真时看左边框里那个"sys"中的"states"值,那个值就是周期数.它的下方是秒数.你需要哪个用哪个.

lusson 发表于 2007-11-29 09:07:27

可以看对应的汇编代码,或是用示波器
二种方法我都做过,哈哈
用示波器就是执行N条相同代码后取反某个端口,N可以取大一点以求平均值

./emotion/em020.gif./emotion/em020.gif

wingyun 发表于 2007-12-12 14:04:36

有这么灵敏的示波器吗?可以看到微秒?

我经常拿示波器来测us级别的信号的,呵呵

neutronlmk 发表于 2007-12-12 15:48:23

进入调试状态后,窗口左侧其中有一项是sec,统计从开始执行到目前为止用去的时间。在延时程序的入口和出口各设一个断点,运行,记下入口和出口的sec值,两者相减其差值为延时值。

stevenlu 发表于 2007-12-13 10:43:17

我一般都用9楼的方法。方便。

lusson 发表于 2007-12-13 18:04:24

还没用过九楼这招呢,惭愧呀。。
不过现在学会了./emotion/em018.gif./emotion/em018.gif

zxd0225 发表于 2007-12-13 23:53:04

在调用前打开定时器,调用后关闭定时器。也可以知道时间啊

ketiy 发表于 2007-12-24 17:16:25

9楼的方法比较好!

fengye2009 发表于 2012-5-29 17:17:52

在需要测量程序的开始和结尾处置标志位,这个标志和IO输出联系起来,通过示波器测量程序运行时间,很准确。

davidd 发表于 2012-5-29 17:36:54

用示波器或软件仿真模式都可以得到软件运行时间。汇编语言计算的方法太累人。
页: [1]
查看完整版本: 请问怎么计算C语言中的运行时间?