我的.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)
发生了什么事?
答案 0 :(得分:1)
如果您使用-O3编译器积极地内联所有内容,那么如果rng可以随机使用某些代码,它可能会混淆rng和random的代码。请使用-O0
再试一次