2017-03-17 31 views
-7

我測量兩種算法的運行時間。什麼影響函數返回給調用者的時間。

我的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毫秒的差異。

所以,我想知道什麼可以影響這兩個函數之間的巨大差異調用。

+0

你回來了什麼?大對象沒有按值移動構造函數? – SergeyA

+5

「請忽略此處的詳細信息」...代碼全部是關於細節 – user463035818

+0

您所做的任何計算或數據訪問都會影響代碼的速度。請提供一個[mcve]和它給出的確切輸出。 –

回答

2

從函數返回的時間應該可以忽略不計。

大多數處理器都有從優化的函數返回的指令,通常是一條指令。

如果您通過複製返回對象,返回時間取決於複製對象所需的時間。

本質上,函數返回涉及獲取返回地址,然後將程序計數器設置爲該地址。沒有太多的時間花在返回。

相關問題