Lambda与g++;4.7-使用g+更快+;4.6
我之所以使用g++4.7,是因为它是g++的最新版本之一,也是第一个真正支持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快 我也尝试过使
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秒左右