对于我的项目,我从 GCC 5 切换到 GCC 9,发现性能变得更差。我做了一些调查并提出了一个简单的源代码来重现该行为。
我在同一台机器上使用不同的 GCC 版本(g++-5 和 g++-9)编译代码
#include <queue>
int main()
{
std::priority_queue<int> q;
for (int j = 0; j < 2000; j ++) {
for (int i = 0; i < 20000; i ++) {
q.emplace(i);
}
for (int i = 0; i < 20000; i ++) {
q.pop();
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我使用 GCC 5 编译它时,我得到以下计时:
# g++-5 -std=c++14 -O3 main.cpp
# time ./a.out
real 0m1.580s
user 0m1.578s
sys 0m0.001s
Run Code Online (Sandbox Code Playgroud)
对 GCC 9 …