首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda用g++ 4.7慢一些--用g++ 4.6更快

Lambda用g++ 4.7慢一些--用g++ 4.6更快
EN

Stack Overflow用户
提问于 2012-10-25 12:31:48
回答 1查看 523关注 0票数 6

我之所以使用g++ 4.7,是因为它是g++的最新版本之一,也是第一个真正支持c++11的版本。

为了测试目的,我正在考虑使用从这里开始的代码。

您可以在这里找到完整的源代码。

我将此源命名为lambda.cpp,并将其编译为:

代码语言:javascript
复制
g++-4.6 -std=c++0x lambda.cpp -o lambda46

g++-4.7 -std=c++11 lambda.cpp -o lambda47

当涉及到lambda性能时,lambda47可执行文件比lambda46慢了大约半秒,令人惊讶的是迭代器部分通常比lambda46快。

我也试过用

代码语言:javascript
复制
g++-4.7 -std=c++0x lambda.cpp -o lambda47-0x

但基本上g++-4.6总是比g++-4.7生成更快的代码。

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

有一个编译器可以更好地使用C++11吗?

g++-4.7已用

配置为:../src/ -v --与-pkgversion=‘Ubuntu/Linaro 4.7.2-4 predicise1’-v-启用--v=c,c++,go,fortran,objc,obj-c++ -前缀=/usr--程序-后缀-启用-共享-启用-linker-build with-system-zlib-libexecdir=/usr/lib-不包括-gettext-启用线程=posix-with-gxx-包含-dir=/usr/包括/c++/4.7-libdir=/usr/lib-启用-nls-with-sysroot=/-启用-clocale=gnu-启用-启用-libstdcxx-调试-启用-libstdcxx-time=-gnu唯一对象??启用??插件??启用??objc?gc??禁用??werror with-arch-32=i 686-??with-调=泛型??启用-检查=发布-构建=x86_64-linux-gnu-host=x86_64-linux-gnu-target=x86_64-linux-gnu。

g++-4.6与

配置为:../src/ -v --=‘Ubuntu/linaro4.6.3-1 ubuntu5’-v-启用--v=c,c++,fortran,objc,obj-c++ -前缀=/usr--程序-后缀-启用-共享-启用-linker-id-with-system-zlib-libexecdir=/usr/lib-不包括-gettext-启用线程=posix-with-gxx-include-dir=/usr/4.6-libdir=/usr/lib-启用-nls-with-sysroot=/-启用-clocale=gnu-启用-启用-libstdcxx-调试-启用-libstdcxx-time=-gnu唯一对象??启用??插件??启用??objc?gc??禁用??werror with-arch-32=i 686-??with-调=泛型??启用-检查=发布-构建=x86_64-linux-gnu-host=x86_64-linux-gnu-target=x86_64-linux-gnu。

EN

回答 1

Stack Overflow用户

发布于 2012-11-04 16:48:35

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

但是如果我用-O3编译您的代码,迭代器的速度大约要快2秒。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13068658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档