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