与std :: mt19937悬空并用gprof分析代码

时间:2014-09-12 09:19:09

标签: c++11 random profiling gprof mersenne-twister

我的.h文件中有这段代码:

std::mt19937 rng(time(NULL)); // mersenne numbers
int random(int n) {
  std::uniform_int_distribution<int> distribution(0, n);
  return distribution(rng);
}

但我从不致电random()

当我使用gprof分析代码时,我得到:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
 99.13      2.28     2.28        1     2.28     2.28  random(int)

发生了什么事?

1 个答案:

答案 0 :(得分:1)

如果您使用-O3编译器积极地内联所有内容,那么如果rng可以随机使用某些代码,它可能会混淆rng和random的代码。请使用-O0

再试一次