Grand Central Dispatch如此之快?(对于此Quicksort算法)

Cra*_*tis 5 multithreading objective-c quicksort 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
Run Code Online (Sandbox Code Playgroud)

这是一个相当简单的算法,使用维基百科页面上提到的简单版本:

维基百科上的Quicksort

我在i7机器上运行它,所以预计性能提升大约为8倍左右.相反,使用Grand Central Dispatch时,算法的速度大约快60-70倍.

是我的编码错误导致的差异,还是使用我不知道的GCD技术优势?

joe*_*ick 2

您的代码中某处有错误,我更改了行

    NSLog(@"Took %f seconds to sort %lu elements WITH GCD", duration, NUM_ELEMENTS);
Run Code Online (Sandbox Code Playgroud)

    NSLog(@"Took %f seconds to sort %lu elements WITH GCD", duration, [sorted count]);
Run Code Online (Sandbox Code Playgroud)

现在输出是

2011-11-27 18:40:28.020 qs[37855:707] Took 5.412689 seconds to sort 1000000 elements with NO GCD
2011-11-27 18:40:28.104 qs[37855:707] Took 0.082455 seconds to sort 1 elements WITH GCD
Run Code Online (Sandbox Code Playgroud)

仍在调查为什么......