我有一个大约有这个的for循环:
Timer timer1, timer2;
double inner_loop_time = 0;
timer1.Reset()
for (int i = 0; i < num_steps; i++) {
timer2.Reset();
sample_point += delta;
// Find some points close to the sample_point.
std::vector<int> point;
FindClosestPoints(sample_point, &new_keypoints);
// Insert the keypoints into a global container.
candidate_keypoints.insert(new_keypoints.begin(),
new_keypoints.end());
inner_loop_time += timer2.ElapsedTimeInSeconds();
}
const double outer_loop_time = timer1.ElapsedTimeInSeconds();
std::cout << "Inner loop time: " << inner_loop_time
<< " vs outer loop time: " << outer_loop_timer;
当我运行此代码时,内循环和外循环之间的时序之间会出现显着的不一致。例如。外循环报告0.96s,内循环报告0.51s。为什么这些时间不一致?
其他说明:
答案 0 :(得分:0)
inner_loop_time
不包括销毁std::vector<int> point
的时间或timer2.Reset()
内的时间。
答案 1 :(得分:0)
取决于num_steps
。每个循环周期确实在两个定时器之间产生很小的差异。因为重置内部计时器和计算通过时间之间存在差距。
时差应该是成比例的。您可以使用
计算它diff = num_steps * gap_time