C++ 是否有正确的功能基准测试方法?

C++ 是否有正确的功能基准测试方法?,c++,benchmarking,C++,Benchmarking,我想问,哪种测量函数执行所需时间的方法被认为是最好的? 只是好奇。 谢谢。您可以尝试使用rdtsc();它是准确的,也许是最快的和跨平台的(但仅适用于x86体系结构)。例如,在Windows中: #include <intrin.h> uint64_t rdtsc() { return __rdtsc(); } #包括 uint64_t rdtsc() { 返回uu rdtsc(); } 请注意,添加基准测试代码将改变代码的性能特征。尤其是当您的函数比gettimeofday快时。

我想问,哪种测量函数执行所需时间的方法被认为是最好的? 只是好奇。 谢谢。

您可以尝试使用rdtsc();它是准确的,也许是最快的和跨平台的(但仅适用于x86体系结构)。例如,在Windows中:

#include <intrin.h>
uint64_t rdtsc()
{
return __rdtsc();
}
#包括
uint64_t rdtsc()
{
返回uu rdtsc();
}

请注意,添加基准测试代码将改变代码的性能特征。尤其是当您的函数比
gettimeofday
快时。始终确保查看程序集,以确保您正在计时您认为正在计时的内容。它不准确(除非正确序列化),不跨平台(并非所有内容都是x86),并且通常存在很大问题。对,它对序列化非常关键,最好在cpu相关性和所有电源管理关闭的情况下使用。。。但是为什么您认为它很有问题?:)我的意思是序列化,以防止CPU使用测量部分中的任何指令块或其外部的任何指令块对其重新排序。也就是说,除了编译器引起的任何移动之外。