是否有正确的功能基准测试方法? [复制]
Posted
技术标签:
【中文标题】是否有正确的功能基准测试方法? [复制]【英文标题】:Is there the right way of function benchmarking? [duplicate] 【发布时间】:2014-11-09 23:16:05 【问题描述】:我想问一下,哪种测量函数执行所需时间的方法被认为是最好的? 只是好奇。 谢谢。
【问题讨论】:
请注意,添加基准测试代码会改变代码的性能特征。特别是如果你的函数比gettimeofday
快。始终确保您查看组装以确保您正在计时您认为您正在计时。
【参考方案1】:
您可以尝试使用 rdtsc();它是准确的,也许是最快的和跨平台的(但仅适用于 x86 架构)。例如,在 Windows 中:
#include <intrin.h>
uint64_t rdtsc()
return __rdtsc();
【讨论】:
它不准确(除非正确序列化),不跨平台(并非所有内容都是 x86),而且总的来说 - 非常有问题。 对,序列化很关键,最好用cpu亲和和所有电源管理关闭...但是为什么你认为它很成问题?:) 我的意思是序列化,以防止 CPU 使用测量部分中的任何指令块对其进行重新排序。也就是说,除了编译器引起的任何移动。以上是关于是否有正确的功能基准测试方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章