PHP usort 速度

6
首先,我会提供代码链接:http://ideone.com/6k8R6

在我的Intel Core 2 Duo电脑上,PHP 5.4.6的结果是:
usort: 7.8763520717621
quicksort: 2.9220938682556
usortquicksort慢)

但在Ideone上的结果是:
usort: 0.0313699245453
quicksort: 0.0621209144592
usortquicksort快)

我还在我朋友的电脑上(Intel Core i5, PHP 5.4.4)测试了该代码,usort也更快。

我的问题是:为什么有时候quicksort比usort快,有时候usort比quicksort快?

我怀疑这是因为你在ideone上使用了一个非常小的数据集,并且你实现了纯PHP的快速排序,而usort是一个库函数。 - Jonas Schäfer
我认为这实际上是基于CPU的并行化,我记得在某个地方读到过关于这个的东西...嗯,我想那可能是维基百科:http://en.wikipedia.org/wiki/Quicksort 但是再读一遍我的头又会疼。 - Sammaye
此外,你的数据集只有四个项目。这甚至不足以充分展示快速排序! - user149341
@duskwuff:我的错误,我也尝试过更大的数据集,但是我贴错了链接。 - Patryk Wychowaniec
我已经尝试了一个20k的数据集,在第一代i7、PHP5.5.3上运行,但我无法证实快速排序会更快,相反地。 - Ext3h
1个回答

1

快速排序算法被认为是处理未排序数据中最快的排序算法之一,但在已排序(或几乎排序)的数据上则是最慢的。


代码在每台计算机上都是相同的,函数set($uzytkownik);用于在每次排序之前将数组设置为未排序状态(我很抱歉如果有语法错误,因为我来自波兰,现在已经很晚了;)). - Patryk Wychowaniec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接