C++速度比較(5) iterator vs forなどによる総なめ
Sponsored Links
皆さんこんにちわ。
お元気ですか。私は元気ですよーSVMってNeuralNetworkより難しい。
さて、STLのコンテナを使うとき、iteratorとforを使って全部に対して関数を実行することもあるでしょう。
しかしこの2つ違いはあるのでしょうか。調べてみました。
実験
実験内容
N=1000000回関数を実行する簡単なお仕事
vector
実験環境
OS:X 10.9.1
CPU:2.8GHz IntelCore i7
メモリ:16GB 1600MHz DDR3
結果
実験内容 | 速度 |
size | 24.637 |
iterator | 119.006 |
コメント
iterator驚きの遅さ…。
sizeでループさせたほうが圧倒的に速い。
ソースコード
#include <iostream> #include <vector> int N = 1000000; int length = 10000; using namespace std; void size_function(vector<int> &array){ for(int i = 0; i < length; i++){ array[i]; } } void iterator_function(vector<int> &array){ vector<int>::iterator it = array.begin(); for(it; it != array.end(); it++){ *it; } } int main(int argc, char const *argv[]) { vector<int> vect(length); for(int i = 0; i < length; i++){ vect[i] = i; } void (*po[])(vector<int> &) = {size_function,iterator_function}; for(int i = 0; i < 2; i++){ clock_t start,end; start = clock(); for(int j = 0; j < N; j++){ (po[i])(vect); } end = clock(); cout << (double)(end - start) / CLOCKS_PER_SEC << endl; } return 0; }