在内存中对大型矢量进行排序的有效方法

时间:2015-04-21 01:30:41

标签: c++ sorting gcc

我需要根据一些用户定义的函数,一次又一次地在64GB RAM高性能计算(HPC)机器上对内存中32 GB大小的用户定义数据类型的大型向量进行排序。我正在使用std :: sort。然而,事实证明std :: sort花费了大量的时间> 1小时。是否有一些其他功能我可以使用比std :: sort更快的排序。

我在我的系统上使用以下gcc版本: gcc(Ubuntu / Linaro 4.6.4-6ubuntu2)4.6.4

1 个答案:

答案 0 :(得分:1)

您可能想要使用std :: sort()(使用quicksort算法)和mergesort的一些混合并在此处应用多线程。

例如,在CPU中有一定数量的内核,分解数据可能是合理的,同时在内核上按std :: sort对每个部分进行排序,然后在mergesort合并排序数组时合并它们。

此致