【发布时间】:2015-10-16 02:36:33
【问题描述】:
我一直在寻找一种使用多线程实现 Timsort for C++ (Implementation found on Github) 的方法,我已经尝试在这个过程中使用。 我确定我使用了正确的编译器标志,但是每当我尝试使用 Timsort 时,如下所示:
#pragma omp parallel shared(DataVector)
{
gfx::timsort(DataVector.begin(), DataVector.end(), comp_1);
}
注意:被排序的数据是一个包含单个单词字符串的向量,我使用的是我自己的比较器。
似乎在不使用 OpenMP 的情况下运行所需的时间相同。为 chrono 等使用适当的包含,我的时间值平均在 0.01 秒内,我的排序徘徊在 1.24 秒左右。
线程似乎不适用于我的排序方法,还是我实现 OpenMP 的方式有问题?
特意注意:我一直在使用 __gnu_parallel::sort 并获得更好的结果,但我希望自己在实践中比较这些方法。
【问题讨论】:
标签: c++ multithreading sorting vector timsort