繁体   English   中英

C ++基准测试,易变

[英]C++ benchmarking, volatile

我正在尝试使用rdtsc测量执行函数'check()'所需的时间,如下所示:

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

return (b-a);

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

我已经读过关于使用称为asm volatile的东西来告诉编译器不要优化代码的特定部分,但是我无法弄清楚如何实现它。

有什么帮助吗?

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

1)您需要运行数亿次迭代才能接收平均avg。 性能

2)不要对这些低级的东西进行基准测试,因为它几乎与现实世界无关。 如果您的线程不断访问共享数据,那么实际的任务工作将耗费数十亿个CPU圈和单个volatile只会增加0.000001%的开销……或者可能会增加100000%。 您可以对算法的一部分进行基准测试,然后对其进行改进,但不能进行特殊说明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM