2017-03-17 6 views
-7

2つのアルゴリズムの実行時間を測定します。関数が呼び出し元に戻る時間に影響を与えるもの。

私のmain()関数は2つのアルゴリズムを呼び出し、それぞれ時間を測定します。

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()関数で測定し、()関数の内部はほとんど差を有している。思えます(150ミリ秒のように) ですが、B()では1500ミリ秒以上の差があります。

私はこの2つの関数呼び出しの大きな違いに何が影響するか知りたいと思います。

+0

返品は何ですか?値によってコンストラクタを移動しない大きなオブジェクト – SergeyA

+5

「ここで詳細を無視してください」...コードはすべて詳細について – user463035818

+0

あなたが行う計算やデータへのアクセスは、コードの速度に影響する可能性があります。 [mcve]とその正確な出力を入力してください。 –

答えて

2

関数から返される時間は無視してください。

ほとんどのプロセッサは、最適化された関数(通常は1つの命令)からの復帰命令を持っています。

コピーでオブジェクトを返す場合は、オブジェクトをコピーするのに必要な時間によって戻り時間が異なります。

本質的に、関数からの復帰にはリターンアドレスを取得し、次にプログラムカウンタをそのアドレスに設定します。帰りにはあまり時間がかかりませんでした。

関連する問題