Lambda与g++;4.7-使用g+更快+;4.6

Lambda与g++;4.7-使用g+更快+;4.6,lambda,g++,performance-testing,Lambda,G++,Performance Testing,我之所以使用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 说到lambda性能,lambda47可执行文件比lambda46慢大约半秒,令人惊讶的是迭代器部分通常比lambda46快 我也尝试过使

我之所以使用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
说到lambda性能,lambda47可执行文件比lambda46慢大约半秒,令人惊讶的是迭代器部分通常比lambda46快

我也尝试过使用

g++-4.7 -std=c++0x lambda.cpp -o lambda47-0x
但基本上,g++-4.6总是比g++-4.7生成更快的代码

这是一种常见的行为还是一个bug

有一个编译器在使用C++11时性能更好


g++-4.7它是用

配置为:../src/configure-v——使用pkgversion='Ubuntu/Linaro 4.7.2-4精确1'——带有错误URL=file:///usr/share/doc/gcc-4.7/README.Bugs -启用语言= 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--withinclude gettext--enable threads=posix--with gxx include dir=/usr/include/c++/4.7--libdir/usr/lib enable nls--with sysroot=/--enable clocale=gnu--enable libstdcxx debug--enable libstdcxx debug--enable libstdcxx time=--启用gnu唯一对象--启用插件--启用objc gc--禁用werror--with-arch-32=i686--with-tune=generic--启用检查=发布--build=x86_64-linux-gnu--host=x86_64-linux-gnu--target=x86_64-linux-gnu

g++-4.6和

配置为:../src/configure-v——使用pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5'--带有bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs ——启用语言= C、C++、FORTRAN、Objc,obj-c++--prefix=/usr--program suffix=-4.6--enable shared--enable linker build id--with system zlib--libexecdir=/usr/lib--withinclude gettext--enable threads=posix--with gxx include dir=/usr/include/c++/4.6--libdir/usr/lib enable nls--with sysroot=/--enable clocale=gnu--enable libstdcxx debug--enable libstdcxx debug--enable libstdcxx time=--启用gnu唯一对象--启用插件--启用objc gc--禁用werror--with-arch-32=i686--with-tune=generic--启用检查=发布--build=x86_64-linux-gnu--host=x86_64-linux-gnu--target=x86_64-linux-gnu


在我的例子中,lambda版本在g++4.6和4.7中都更快(并且g++4.7产生的代码比4.6更快)。与您唯一不同的是,我使用的是32位版本的编译器

但如果我用-O3编译代码,迭代器的速度会快2秒左右