C++プログラムのプロファイリングを行い、その目的でhigh_resolution_clockを使用しました。その問題のサンプルコードが例として提供されています。私は3つの異なる方法を試しました。high_resolution_clockを使用したC++プログラムのプロファイリング
例1
#include<iostream>
#include <chrono>
using namespace std;
using namespace chrono;
unsigned int ttime = 0;
int main(){
int i = 0;
int j = 0;
while(i < 10000000){
high_resolution_clock::time_point t1 = high_resolution_clock::now();
j += i;
i++;
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto tm_duration = duration_cast<microseconds>(t2 - t1).count();
ttime += tm_duration;
}
cout << "Took " << ttime << " microseconds " << endl;
return 0;
}
ループ内このexample用クロックとうまく機能予想通り、結果を与えます。このexample
例2
#include<iostream>
#include <chrono>
using namespace std;
using namespace chrono;
unsigned int ttime = 0;
int main(){
int i = 0;
int j = 0;
high_resolution_clock::time_point t1 = high_resolution_clock::now();
while(i < 10000000){
j += i;
i++;
}
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto tm_duration = duration_cast<microseconds>(t2 - t1).count();
ttime += tm_duration;
cout << "Took " << ttime << " microseconds " << endl;
return 0;
}
私は疑問0
時間を示しています。このexample
例3
#include<iostream>
#include <chrono>
using namespace std;
using namespace chrono;
unsigned int ttime = 0;
int main(){
int i = 0;
int j = 0;
high_resolution_clock::time_point t1 = high_resolution_clock::now();
while(i < 10000000){
j += i;
i++;
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto tm_duration = duration_cast<microseconds>(t2 - t1).count();
ttime += tm_duration;
}
cout << "Took " << ttime << " microseconds " << endl;
return 0;
}
は3792420263
マイクロ私も疑問を示しています。
example 2
とexample 3
の問題は何ですか?どちらが正しいか。