我使用的是g ++ 4.7,因为它是g ++的最新版本之一,它是第一个增加真正支持的版本c++11.
出于测试目的,我正在考虑采用代码 从这里.
我将此源命名为lambda.cpp,并使用以下命令编译它:
g++-4.6 -std=c++0x lambda.cpp -o lambda46
g++-4.7 -std=c++11 lambda.cpp -o lambda47
Run Code Online (Sandbox Code Playgroud)
当涉及到lambda性能时,lambda47可执行文件比lambda46慢约半秒,令人惊讶的是迭代器部分通常比lambda46快.
我也试过用
g++-4.7 -std=c++0x lambda.cpp -o lambda47-0x
Run Code Online (Sandbox Code Playgroud)
但基本上g ++ - 4.6总是生成比g ++ - 4.7更快的代码.
这是一种常见的行为,还是一个错误?
有一个编译器可以用C++ 11更好地执行?
g ++ - 4.7它已经编译好了
配置为:../ src/configure -v --with-pkgversion ='Ubuntu/Linaro 4.7.2-4precise1'--with-bugurl = file:///usr/share/doc/gcc-4.7/README.错误--enable-languages = c,c ++,go,fortran,objc,obj-c ++ --prefix =/usr --program-suffix = -4.7 --enable-shared --enable-linker-build-id - with-system-zlib --libexecdir =/usr/lib --without-included-gettext --enable-threads = posix --with-gxx-include-dir =/usr/include/c ++/4.7 --libdir =/usr/lib --enable-nls --with-sysroot =/--enable -clocale = gnu …