【发布时间】:2014-02-01 09:30:31
【问题描述】:
在运行一些基准测试程序时,挂钟可能会提供非常短的持续时间,这是因为各种编译器优化,如死代码消除、循环展开......优化了测试代码。
我可以通过 static/volatile 限定符添加一些“外部依赖”,但这并不总是有效。
有什么想法吗?
【问题讨论】:
-
保持原样。如果您要进行基准测试,那是因为您需要真实的测量结果。和编译器优化是其中的一部分。
-
@H2CO3 这并不完全正确。 3DMark 曾经在 CPU 上进行渲染测试,这与实际测量相去甚远。基准测试的目标是测量(通常)硬件之间的性能比。即使测试非常不切实际,只要您一直使用相同的测试,您仍然可以比较硬件。
-
@Kevin 但如果不同的硬件以不同的比率处理易失性与非易失性,并且您不需要易失性,您的结果会出现偏差
标签: c++ c optimization compiler-construction profile