什么影响函数返回调用者的时间。

时间:2017-03-17 18:57:44

标签: c++ function

我测量两种算法的运行时间。

我的main()函数调用两个算法并分别测量时间。

假设A()和B()是算法的名称。

我的所作所为(请忽略此处的详细信息)

begin = 
A();
end = 
cout << "time A : " << end-begin << endl;
begin = 
B();
end = 
cout << "time B : " << end-begin << endl;

我还测量每个函数的内部时间。 例如,

A()
{
    begin = 
    .....
    end = 
    cout << "time inside A : " << end - begin << endl;
    return ..;
}
B()
{
    begin = 
    .....
    end = 
    cout << "time inside B : " << end - begin << endl;
    return ..;
}

似乎在main()函数和A()函数内部测量的时间差别很小。 (像150毫秒) 但对于B(),它有超过1500毫秒的差异。

所以,我想知道什么可以影响两个函数调用之间的这个巨大差异。

1 个答案:

答案 0 :(得分:2)

从函数返回的时间应该可以忽略不计。

大多数处理器都有从优化函数返回的指令,通常是一条指令。

如果要通过复制返回对象,则返回时间取决于复制对象所需的时间。

本质上,函数返回涉及获取返回地址,然后将程序计数器设置为该地址。回来的时间不多。