我在我的程序中有一对向量,我需要对它进行排序。一些为:与英特尔相比,排序向量对时GNU C++编译器性能不佳英特尔
std::vector<std::pair<int, uintmax_t> > temp;
...
std::sort(temp.begin(), temp.end());
我执行一些测量,结果发现,为的大小的东西在元件16M向量,当与GNU C++编译器编译时与英特尔C++编译器25秒编译分拣需要3秒。这对我来说似乎是一个极端的差异(使用GNU的速度比使用GNU慢8倍以上)。
你知道如何使用GNU C++更快地编写这个程序吗?
我的配置是Intel 12.1.5和GNU 4.7.1。不幸的是,我在用于程序运行的计算机上没有超级用户权限。
感谢您的帮助, 丹尼尔。
编辑:优化标志-O3解决了这个问题,GNU C++现在需要3到4秒。感谢提示,对我感到羞耻我没有想到它自己:(所以,我希望这篇文章有助于别人有一天:)。
只是为了信息,我没有我的测量内指定任何的优化参数(也许是-O2默认都为英特尔和GNU?)。
用'-O3'编译? – Anycorn
您可以发布整个测试程序,以便我们可以尝试复制您的结果,然后分析它们。加快速度的第一步是弄清为什么需要这么长时间。 (我会亲自使用'callgrind') –
@Anyconr:谢谢,它帮助了解编辑问题的详细信息:) –