我正在尝试检查两个函数花费的时间来比较它们。
这些功能将两个后备者作为输入。
这两个在一个函数内部被调用。
void b_mark()
{
for(int i=0;i<10;i++)
{
timer1.start();
function1(std::back_inserter(itr1));
timer1.stop();
timer2.start();
function2(std::back_inserter(itr2));
timer2.stop();
}
}
事实证明,我首先调用的函数需要更多时间,如果是,则无关紧要 function1或function2。
这可能是什么原因?
计时器是std::clock()
的包装。
答案 0 :(得分:1)
您测量的时间包括std::back_inserter(...)
的时间。可能是第一次打电话需要更多时间,例如用于初始化?
答案 1 :(得分:1)
当你想要衡量某些东西时,你必须确保:
在你的情况下,我怀疑:
timer
课程可能不正确,导致结果无效简而言之:此测试用例似乎不可靠,其结果可能无效。
尝试修改这样的代码:
void b_mark()
{
int count = 10000;
timer1.start();
for(int i=0;i<count;i++)
{
resetItr(itr1);
function1(std::back_inserter(itr1));
}
timer1.stop();
timer2.start();
for(int i=0;i<count;i++)
{
resetItr(itr2);
function2(std::back_inserter(itr2));
}
timer2.stop();
}