我测试了我的程序,并决定将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
为什么这样?