On Tuesday, July 08, 2014 06:11 PM, Adam Romanek wrote:
As promised I performed a simple test during the weekend and wasn't able to reproduce the issue. See the code below:
--- #include <vector> #include
#include void call(boost::function
f) { f(); } long long total = 0;
int func2(std::vector<int> i){ total += i.size(); return i.size(); }
int main() { std::vector<int> v(100); const int T = 1000000; // s = boost::chrono::system_clock::now(); for (int i = 0; i < T; ++i) call(boost::bind(&func2, v)); // e = boost::chrono::system_clock::now(); } ---
The performance does not change when compiling with -std=c++11 or without it. I compile the code like this:
$ g++ -I/home/A.Romanek/tmp/boost/boost_1_55_0 main.cpp -std=c++11 -O2 && time ./a.out
real 0m1.669s
My setup is Ubuntu 14.04, gcc 4.8.2 and my CPU is Intel Core2Duo P8700 @ 2.53GHz.
Could you please provide a complete example so that I could reproduce the issue on my desk?
Make of this what you will, I used your example: g++-4.8.2 -std=c++03 -std=c++11 real 0m0.753s 0m0.798s user 0m0.752s 0m0.797s sys 0m0.001s 0m0.002s g++-4.9 -std=c++03 -std=c++11 real 0m0.786s 0m1.419s user 0m0.785s 0m1.418s sys 0m0.001s 0m0.002s clang++-3.4 (libstdc++ from g++-4.9) -std=c++03 -std=c++11 real 0m0.799s 0m1.407s user 0m0.798s 0m1.406s sys 0m0.001s 0m0.002s clang++-3.4 (libc++ trunk) -std=c++03 -std=c++11 real 0m1.382s 0m1.389s user 0m1.381s 0m1.387s sys 0m0.002s 0m0.002s clang++-3.5 (libstdc++ from g++-4.9) -std=c++03 -std=c++11 real 0m0.812s 0m1.112s user 0m0.811s 0m1.111s sys 0m0.002s 0m0.002s clang++-3.5 (libc++ trunk) -std=c++03 -std=c++11 real 0m0.782s 0m0.770s user 0m0.781s 0m0.769s sys 0m0.002s 0m0.002s Ben