Я новичок в параллельном программировании и не понимаю, почему метод QuickSortParallel работает медленнее, чем моя последовательная версия (без Parallel.Invoke). У меня есть неровный массив, состоящий из ста тысяч девятизначных чисел, которые я передаю для сортировки. К сожалению, когда я использую метод QuickSortParallel, он оказывается почти в 5 раз медленнее, чем последовательная версия.
Могу ли я сделать больше, чем просто использовать Parallel.Invoke для источника данных?
public static void QuickSort_Parallel(T[] array2) where T : IComparable
{
QuickSortParallel(array2, 0, array2.Length - 1);
}
private static void QuickSortParallel(T[] array2, int left, int right)
where T : IComparable
{
if (left >= right)
{
return;
}
SwapElements(array2, left, (left + right) / 2); //median pivot
int last = left;
for (int current = left + 1; current QuickSortParallel(array2, left, last - 1),
() => QuickSortParallel(array2, last + 1, right)
);
}
static void SwapElements(T[] array2, int i, int j)
{
T temp = array2;
array2 = array2[j];
array2[j] = temp;
}
Подробнее здесь: https://stackoverflow.com/questions/129 ... ial-method
Почему мой метод параллельной быстрой сортировки медленнее последовательного метода? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Потенциальная ошибка в примере параллельной быстрой сортировки из C++ Concurrency In Action
Anonymous » » в форуме C++ - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему моя функция сортировки C ++ намного медленнее, чем моя функция сортировки C#?
Anonymous » » в форуме C++ - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-