【发布时间】:2015-12-27 15:38:30
【问题描述】:
我有一个代表 SMS 的对象的数组(嗯,一个 PHP 数组...它不是真正的数组。但你明白了。)。这些对象中的一个字段是 DateTime 类型,我想按该字段对数组进行排序。 我无法对 DB 中的数据进行排序,我从无法更改的 Web 服务接收数据,所以请不要这样做。我使用以下 sn-p 代码对数组进行排序:
usort($smsMessages, function ($a, $b) {
if ($a->SendTime == $b->SendTime) {
return 0;
}
return ($a->SendTime < $b->SendTime) ? -1 : 1;
});
这可行,但需要 160 秒 对 30.000 个元素进行排序。
现在,我知道 php 很慢,但这很荒谬。我写这个的方式有问题吗? usort 是否已知速度慢/损坏/错误?我应该使用其他方法吗?自己滚?
【问题讨论】:
-
说真的,你抱怨排序 30K 元素?
-
在 i7(第 4 代)上(您的代码)大约需要 1.3 秒来处理 30k 个元素。
-
@u_mulder - 我抱怨排序糟糕的 30k 元素需要 160 秒的时间。
-
@u_mulder:应该不会花三分钟。
-
@JeremyJackson - 是的,我可以对其进行排序。