我使用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秒。