C++ 速度比較(6) 宣言に関する内容、ループ内でのメンバ変数の使用
Sponsored Links
皆さんこんにちわ
お元気ですか。私は…どうなんでしょう?
さて、今回はC++速度検証第6回。
ループの中で変数を宣言して代入していく場合、そして、ループの外で変数を宣言し、変数を代入する方法。
また、メンバ変数をループで使った場合遅いというページを見たので検証をしてみた。
実験
実験内容
メンバ関数内で100000回実行し、外部で100000回それを実行した。
実験環境
OS:X 10.9.1
CPU:2.8GHz IntelCore i7
メモリ:16GB 1600MHz DDR3
結果
メンバ変数、宣言をループ内で使用 | 24.09 |
宣言をループ内で使用 | 23.75 |
どちらも外部で | 23.55 |
感想
極々わずかだと思います。
これならコード見やすい方に合わせるのがベストかなと…。
ソースコード
#include <iostream> using namespace std; class Temp{ public: int tmp; Temp(int num){ tmp = num; } void Boo(); void Foo(); void Bar(); }; void Temp::Boo(){ for(int i = 0; i < tmp; i++){ int temp_answer = i; } } void Temp::Foo(){ int size = tmp; int temp_answer = 0; for(int i = 0; i < size; i++){ temp_answer = i; } } void Temp::Bar(){ int size = tmp; for(int i = 0; i < size; i++){ int a = i; } } int main(int argc, char const *argv[]){ Temp tmp(100000); void(Temp::*func[])() = {&Temp::Boo,&Temp::Foo,&Temp::Bar}; for(int i = 0; i < 3; i++){ clock_t start,end; start = clock(); for(int j = 0; j < 100000; j++){ (tmp.*func[i])(); } end = clock(); cout << (double)(end - start) / CLOCKS_PER_SEC << endl; } return 0; }