C++11講座11回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
第11回は時間関係になります。
従来の方法で時間計測を行う場合
1: #include <iostream>
2: #include <array>
3: #include <algorithm>
4: #include <random>
5: #include <ctime>
6:
7: using namespace std;
8:
9: int main()
10: {
11: //10万の長さの配列
12: array<double, 100000> arr;
13: random_device rd;
14:
15: //乱数で初期化
16: generate(arr.begin(), arr.end(), [&rd](){return rd()...
17:
18: //計測開始
19: clock_t start = clock();
20:
21: for_each(arr.begin(), arr.end(), [](double& i){i = i...
22:
23: //計測終了
24: clock_t end = clock();
25:
26: //結果の表示
27: cout << "time[s] = " << (double)(end - start) / CLOC...
28:
29: return 0;
30: }
C言語にもある<time.h>あるいは、<ctime>を使用していました...
C++11では<chrono>を利用することによって複数の単位を扱うこ...
1: #include <iostream>
2: #include <array>
3: #include <algorithm>
4: #include <random>
5: #include <chrono>
6:
7: using namespace std;
8:
9: int main()
10: {
11: //10万の長さの配列
12: array<double, 100000> arr;
13:
14: random_device rd;
15:
16: //乱数で初期化
17: generate(arr.begin(), arr.end(), [&rd](){return rd()...
18:
19: //計測開始
20: auto start = chrono::system_clock::now();
21:
22: for_each(arr.begin(), arr.end(), [](double& i){i = i...
23:
24: //計測終了
25: auto end = chrono::system_clock::now();
26:
27: //結果の表示
28: auto diff = end - start;
29: //秒
30: cout << "time[s] = " << chrono::duration_cast<chrono...
31: //ミリ秒
32: cout << "time[ms] = " << chrono::duration_cast<chron...
33: //マイクロ秒
34: cout << "time[μs] = " << chrono::duration_cast<chron...
35: //ナノ秒
36: cout << "time[ns] = " << chrono::duration_cast<chron...
37:
38: return 0;
39: }
結果の所を見ればわかりますが、複数の単位に変換出来ること...
また、演算にも対応しているため
1: #include <iostream>
2: #include <chrono>
3:
4: using namespace std;
5:
6: int main()
7: {
8: chrono::seconds sec(60);//60秒
9: chrono::minutes min(2);//2分
10:
11: //秒+分
12: auto result = sec + min;
13:
14: //結果は秒で表示される(180秒)
15: cout << result.count() << endl;
16:
17: //もちろん分にすることも可能
18: cout << chrono::duration_cast<chrono::minutes>(resul...
19:
20: return 0;
21: }
このようなことも出来ます。
従来の方法に比べると記述が複雑になりますが、便利なのでぜ...
※ちなみにautoにしている部分を正式に書くと
std::chrono::duration<数値型, 単位型>
になります。(単位型はC++11講座14回の有理数を使います)
以上でC++11での時間計測の説明を終わります。
前→C++11講座10回
次→C++11講座12回
#vote(汚れるんだよC++が[1],これこそC++だな![0],観葉植物く...
終了行:
第11回は時間関係になります。
従来の方法で時間計測を行う場合
1: #include <iostream>
2: #include <array>
3: #include <algorithm>
4: #include <random>
5: #include <ctime>
6:
7: using namespace std;
8:
9: int main()
10: {
11: //10万の長さの配列
12: array<double, 100000> arr;
13: random_device rd;
14:
15: //乱数で初期化
16: generate(arr.begin(), arr.end(), [&rd](){return rd()...
17:
18: //計測開始
19: clock_t start = clock();
20:
21: for_each(arr.begin(), arr.end(), [](double& i){i = i...
22:
23: //計測終了
24: clock_t end = clock();
25:
26: //結果の表示
27: cout << "time[s] = " << (double)(end - start) / CLOC...
28:
29: return 0;
30: }
C言語にもある<time.h>あるいは、<ctime>を使用していました...
C++11では<chrono>を利用することによって複数の単位を扱うこ...
1: #include <iostream>
2: #include <array>
3: #include <algorithm>
4: #include <random>
5: #include <chrono>
6:
7: using namespace std;
8:
9: int main()
10: {
11: //10万の長さの配列
12: array<double, 100000> arr;
13:
14: random_device rd;
15:
16: //乱数で初期化
17: generate(arr.begin(), arr.end(), [&rd](){return rd()...
18:
19: //計測開始
20: auto start = chrono::system_clock::now();
21:
22: for_each(arr.begin(), arr.end(), [](double& i){i = i...
23:
24: //計測終了
25: auto end = chrono::system_clock::now();
26:
27: //結果の表示
28: auto diff = end - start;
29: //秒
30: cout << "time[s] = " << chrono::duration_cast<chrono...
31: //ミリ秒
32: cout << "time[ms] = " << chrono::duration_cast<chron...
33: //マイクロ秒
34: cout << "time[μs] = " << chrono::duration_cast<chron...
35: //ナノ秒
36: cout << "time[ns] = " << chrono::duration_cast<chron...
37:
38: return 0;
39: }
結果の所を見ればわかりますが、複数の単位に変換出来ること...
また、演算にも対応しているため
1: #include <iostream>
2: #include <chrono>
3:
4: using namespace std;
5:
6: int main()
7: {
8: chrono::seconds sec(60);//60秒
9: chrono::minutes min(2);//2分
10:
11: //秒+分
12: auto result = sec + min;
13:
14: //結果は秒で表示される(180秒)
15: cout << result.count() << endl;
16:
17: //もちろん分にすることも可能
18: cout << chrono::duration_cast<chrono::minutes>(resul...
19:
20: return 0;
21: }
このようなことも出来ます。
従来の方法に比べると記述が複雑になりますが、便利なのでぜ...
※ちなみにautoにしている部分を正式に書くと
std::chrono::duration<数値型, 単位型>
になります。(単位型はC++11講座14回の有理数を使います)
以上でC++11での時間計測の説明を終わります。
前→C++11講座10回
次→C++11講座12回
#vote(汚れるんだよC++が[1],これこそC++だな![0],観葉植物く...
ページ名: