【发布时间】:2012-08-20 22:25:10
【问题描述】:
首先,我将给出一个代码链接:http://ideone.com/6k8R6
在我的 Intel Core 2 Duo 上,PHP 5.4.6 结果是:usort: 7.8763520717621quicksort: 2.9220938682556
(usort 比 quicksort 慢)
但在 Ideone 上的结果是:usort: 0.0313699245453quicksort: 0.0621209144592
(usort 比 quicksort 快)
我还在朋友的电脑上检查过代码(Intel Core i5、PHP 5.4.4),usort 也更快。
我的问题是:为什么有时 quicksort 比 usort 快,而有时 usort 更快?
【问题讨论】:
-
我怀疑这是因为您在 ideone 上使用了一个非常小的数据集,并且您在纯 PHP 中实现了快速排序,而 usort 是一个库函数。
-
我相信这实际上是基于 CPU 由于并行化,我记得在某处读过一些关于这个的东西....嗯,我认为它实际上是维基百科:en.wikipedia.org/wiki/Quicksort 但我的头会很痛仔细阅读。
-
补充一点——你的数据集有四个项目。这甚至不足以正确演示快速排序!
-
@duskwuff:我的错误,我也尝试过更大的数据集,但我粘贴了错误的链接。
-
在第一代 i7、PHP5.5.3 上使用 20k 数据集进行了尝试,但我无法确认快速排序会更快,相反。