C 基准测试,挥发性



我正在尝试使用rdtsc使用RDTSC来测量执行函数'check(('所需的时间:

a = rdtsc();
check(pw);
b = rdtsc();
return (b-a);

但是,我收到的时间差很小,我认为这是由于我的编译器(在Windows上使用G (优化了代码。由于" check(("不影响程序的任何其他部分,因此我认为编译器完全忽略了此调用。

我已经阅读了有关使用称为ASM挥发性的东西来告诉编译器不要优化一定的代码部分,但我不知道如何实现它。

对此有任何帮助吗?

大概是该函数计算并返回一些值。用该值进行操作,例如将其添加到全局变量(并最终打印出该变量(,以便编译器无法轻松地优化函数。

1(您需要运行数亿次迭代才能接收Kinda AVG。性能

2(不要基准这样的低级事物,因为它几乎与现实世界无关。实际的任务工作数十亿个CPU圆圈和单挥发性只能增加0.000001%的开销...或者如果您的线程不断访问共享数据,则可能会增加100000%。您可以基准部分算法的部分,然后改进它,但不是特定的说明。

最新更新