gettimeofday を使用して、Android アプリの C++ ネイティブ コードで記述した関数の実行時間を測定しています。これを実現するために、タイマー クラスを作成しました。
timer::timer(){Reset();}
timer::Reset(){
timeval t;
gettimeofday(&t, 0);
start_s = t.tv_sec;
start_ms = t.tv_usec * 0.001f;
}
timer::GetTime(){
timeval t;
gettimeofday(&t, 0);
return (t.tv_sec - start_s)*1000 + t.tv_usec * 0.001f - start_ms;
}
次に、メイン コードで 2 つのタイマー オブジェクトを作成し、次のように測定を実行します。
main(){
timer t1, t2;
stringstream str1;
t1.Reset();
for (some count){
t2.Reset();
some_function();
str1 << t2.GetTime() << " ";
}
str1 << t1.GetTime();
output str1;
}
しかし問題は、出力結果を見ると、t1 がすべての t2 値とほぼ同じであることです。for ループが 5 回実行された場合、出力の例は「0.5 0.5 0.4 0.4 0.5 0.55」になります。
なぜこれが起こるのか分かりません。
どんな助けでも大歓迎です。
ありがとう。