我需要找到执行单条指令或几条指令所需的时间,并以毫秒为单位进行打印。有人可以分享这个小代码片段。
谢谢..我需要使用这个度量来执行项目中的一些指令。
答案 0 :(得分:4)
#include<time.h>
main()
{
clock_t t1=clock();
printf("Dummy Statement\n");
clock_t t2=clock();
printf("The time taken is.. %g ", (t2-t1));
请看下面的说法。 What’s the correct way to use printf to print a clock_t?
http://www.velocityreviews.com/forums/t454464-c-get-time-in-milliseconds.html
答案 1 :(得分:3)
执行一条指令将花费不到1毫秒的时间。如果你试图测量多个指令,它会变得复杂(多次调用指令的循环怎么样)。
此外,您可以使用的大多数计时功能只是:功能。这意味着他们也会执行指令。如果你想给一条指令计时,最好的办法就是查看你正在使用的处理器的规格,看看它需要多少个循环。
无法以编程方式执行此操作。
编辑:
由于您已将问题更新为现在,请参阅一些说明。您可以在某些处理器上测量亚毫秒时间。了解环境会很高兴。这适用于x86和linux,其他环境也不同。
Clock get time允许亚纳秒精度。或者你可以自己调用rdstc指令(祝你在多处理器或smp系统上好运 - 你可能正在测量错误的东西,例如让指令在不同的处理器上运行)。
答案 2 :(得分:0)
实际完成指令的时间取决于时钟周期时间,以及指令遍历处理器的流水线深度。正如戴夫所说,通过制作一个程序,你无法真正找到它。您可以使用操作系统为您提供的某种计时功能来测量完成一些小指令所需的CPU时间。如果这样做,请尽量不要使用任何依赖内存或分支的指令。理想情况下,您可以执行某种逻辑或算术运算(因此可能在C中使用一些内联汇编)。