/* g++ 1.cpp -std=c++11 -O3 -DVECTOR=std::vector -o std g++ 1.cpp -std=c++11 -O3 -DVECTOR=boost::container::vector -o boost time ./std;time ./boost */ #include #include #include #include int main() { constexpr size_t size = 1024; VECTOR a, b, c; for(int i = 0; i < size*size; i++) { a.emplace_back(i+2); b.emplace_back(i*i+3); } for(int i = 0; i < size; i++) for(int j = 0; j < size; j++) { auto a_i = a.begin() + i * size; auto b_j = b.begin() + j * size; VECTOR ab(size); std::transform( a_i, a_i + size, b_j, ab.begin(), std::plus()); c.emplace_back(std::accumulate(ab.begin(), ab.end(), 0.)); } }