我的程序中有一个对向量,我需要对其进行排序。比如:
std::vector<std::pair<int, uintmax_t> > temp;
...
std::sort(temp.begin(), temp.end());
我进行了一些测量,发现对于大小超过 16M 元素的向量,使用 Intel C++ 编译器编译时排序需要 3 秒,使用 GNU C++ 编译器编译时需要 25 秒。这对我来说似乎是一个极端的差异(使用 GNU 慢了 8 倍以上)。
你知道如何使用 GNU C++ 使这个程序更快吗?
我的配置是 Intel 12.1.5 和 GNU 4.7.1。不幸的是,我在用于程序运行的计算机上没有超级用户权限。
提前感谢您的帮助,丹尼尔。
编辑:优化标志 -O3 解决了这个问题,GNU C++ 现在需要 3 到 4 秒。感谢您的提示,我很惭愧,我自己还没有弄清楚:(。所以,我希望这篇文章有一天能帮助别人:)。
仅供参考,我没有在我的测量中指定任何优化标志(也许 -O2 是 Intel 和 GNU 的默认值?).