【问题标题】:PHP usort speedPHP 排序速度
【发布时间】:2012-08-20 22:25:10
【问题描述】:

首先,我将给出一个代码链接: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 更快?

【问题讨论】:

  • 我怀疑这是因为您在 ideone 上使用了一个非常小的数据集,并且您在纯 PHP 中实现了快速排序,而 usort 是一个库函数。
  • 我相信这实际上是基于 CPU 由于并行化,我记得在某处读过一些关于这个的东西....嗯,我认为它实际上是维基百科:en.wikipedia.org/wiki/Quicksort 但我的头会很痛仔细阅读。
  • 补充一点——你的数据集有四个项目。这甚至不足以正确演示快速排序!
  • @duskwuff:我的错误,我也尝试过更大的数据集,但我粘贴了错误的链接。
  • 在第一代 i7、PHP5.5.3 上使用 20k 数据集进行了尝试,但我无法确认快速排序会更快,相反。

标签: php sorting usort


【解决方案1】:

快速排序被认为是对未排序数据最快的排序算法之一,而对已经排序(或几乎排序)的数据来说是最慢的。

【讨论】:

  • 每台计算机上的代码都是相同的,函数set($uzytkownik); 用于在每次排序之前将数组设置为未排序状态(对于任何语法错误,我深表歉意,但我来自波兰,对我来说已经很晚了;))。
猜你喜欢
  • 2020-12-13
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 2013-04-26
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多