Я новичок в параллельном программировании и не понимаю, почему метод 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