Почему мой метод параллельной быстрой сортировки медленнее последовательного метода?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой метод параллельной быстрой сортировки медленнее последовательного метода?

Сообщение Anonymous »

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»