私は自分のプログラムをテストし、一度、BOOST_FOREACH
マクロを で単純なfor
サイクルに変更することにしましたconst_iterator
。
そして私は予期しない結果を受け取ります:プログラムの動作が遅くなりfor
ます。
それから私は小さなテストアプリを書きました:
std::vector<int> vec;
for (int i = 0; i != 50000000; ++i)
vec.push_back(i);
time_t t1 = clock();
int sum1 = 0;
for (std::vector<int>::const_iterator it = vec.begin(); it != vec.end(); ++it)
sum1 += *it;
std::cout << ulong(clock() - t1);
time_t t2 = clock();
int sum2 = 0;
BOOST_FOREACH(auto &it, vec) {
sum2 += it;
}
std::cout << ulong(clock() - t2);
ここに出力があります:
34963
26964
なんでそうなの?