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

出于测试目的,我正在考虑采用from here的代码。

You can find the complete source code here.

我将此源命名为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生成更快的代码。

这是常见的行为还是错误?

有没有一个编译器可以在C++ 11下更好地执行?

g++-4.7它已经被编译为



g++-4.6与

最佳答案

就我而言,lambda版本在g++ 4.6和4.7上都更快(而g++ 4.7产生的代码比4.6快)。与您的唯一区别是,我使用的是32位版本的编译器。

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

10-06 13:42
查看更多