2012-11-01 113 views
3

我需要找出执行单条指令或几条指令所需的时间,并以毫秒为单位打印出来。有人可以分享这个小代码片段。C程序测量指令的执行时间

谢谢..我需要用这个度量来执行我的项目中的一些指令。

+0

指令?以毫秒为单位?我想这是你正在谈论的一个古老的计算机。你可以用秒表来测量它... – valdo

+0

非常有趣...但是,谢谢 – Romaan

+1

另一种方法是读取编译器生成的汇编代码(使用gcc试试-S开关),然后查找时钟周期数目标处理器文档中的每个汇编指令。 – potrzebie

回答

3

一条指令将花费比1毫秒更短的时间执行。如果你试图测量多条指令,它会变得复杂(关于多次调用指令的循环)。

此外,您可以使用的大多数定时功能只是:功能。这意味着他们也会执行指令。如果你想要一个指令的时间,那么最好的办法是查找你正在使用的处理器的规格,看看它需要多少个周期。

以编程方式进行此操作是不可能的。

编辑:

既然你已经更新了你的问题现在参考一些说明。您可以在某些处理器上测量亚毫秒时间。很高兴知道这个环境。这将在x86和Linux上工作,其他环境将有所不同。

Clock get time允许亚纳秒精度。或者你可以自己调用rdstc指令(在多处理器或smp系统上运行这个指令 - 你可能在测量错误的东西,比如指令运行在不同的处理器上)。

+0

我需要测量执行一组指令所需的时间。但所花费的时间少于1毫秒。我已经尝试过使用时钟功能。有什么建议么??? – Romaan

0

实际到的时间实际上完成一条指令取决于时钟周期时间以及指令通过处理器的流水线深度。正如戴夫所说,通过制作程序你无法真正发现这一点。您可以使用您的操作系统提供的某种定时功能来测量完成一些小指令所需的CPU时间。如果你这样做,尽量不要使用任何依赖内存或分支的指令。理想情况下,你可能会做某种逻辑或算术运算(所以也许在C中使用一些内联汇编)。