与英特尔相比,GNU C++编译器在对向量进行排序时性能较差
Poor performance of GNU C++ compiler while sorting vector of pairs, compared with Intel
我的程序中有一个成对的向量,我需要对它进行排序
std::vector<std::pair<int, uintmax_t> > temp;
...
std::sort(temp.begin(), temp.end());
我进行了一些测量,发现对于大小超过16M元素的向量,使用英特尔C++编译器编译时排序需要3秒,使用GNU C++编译器编译则需要25秒。这对我来说似乎是一个极端的区别(使用GNU的速度慢了8倍多)。
你知道如何用GNU C++使这个程序更快吗?
我的配置是Intel 12.1.5和GNU 4.7.1。不幸的是,我在用于运行程序的计算机上没有超级用户权限。
感谢您的帮助,丹尼尔。
编辑:优化标志-O3解决了这个问题,GNU C++现在需要3到4秒。谢谢你的提示,我很遗憾我自己还没有弄清楚:(。所以,我希望这篇文章有一天能帮助其他人:)。
仅供参考,我没有在我的测量中指定任何优化标志
是的,-O2/-O3就足够解决这个问题了。有关要优化的g++标志的更多信息,请参阅此处https://stackoverflow.com/a/3005673/1095974.
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序