Как так быстро Grand Central Dispatch? (Для этого алгоритма быстрой сортировки)

Пытаясь освежить в памяти некоторые забавы, связанные с многопоточностью / сортировкой, я решил собрать тест Quicksort (написанный на Objective-C), который использует Grand Central Dispatch, чтобы определить, насколько быстрее можно использовать многоядерные машины. .

main.m

QuickSort.m

Это сгенерированный результат:

2011-11-27 13:10:55.595 Quicksort[1583:707] Took 4.731876 seconds to sort 1000000 elements with NO GCD
2011-11-27 13:10:55.670 Quicksort[1583:707] Took 0.070753 seconds to sort 1000000 elements WITH GCD

Это довольно простой алгоритм, использующий Простую версию , упомянутую на странице Википедии:

Quicksort в Википедии

Я запускаю это на машине i7, поэтому ожидаю увеличения производительности примерно в 8 раз. Вместо этого алгоритм примерно в 60-70 раз быстрее при использовании Grand Central Dispatch.

Это разница вызвана ошибкой кодирования с моей стороны, или есть технические преимущества использования GCD, о которых я просто не знаю?

5
задан Craig Otis 27 November 2011 в 18:33
поделиться