我有一个数组(实际上是PHP数组...虽然不是真正的数组,但你懂我的意思),其中包含代表短信的对象。这些对象中的一个字段是DateTime类型,我想按照该字段对数组进行排序。我无法在数据库中对数据进行排序,因为我从无法更改的Web服务中接收到它,所以请不要建议我这样做。我使用以下代码片段对数组进行排序:
usort($smsMessages, function ($a, $b) {
if ($a->SendTime == $b->SendTime) {
return 0;
}
return ($a->SendTime < $b->SendTime) ? -1 : 1;
});
这样做可以排序 30,000 个元素,但需要160秒。
我知道 php 慢,但这太离谱了。我写的有什么问题吗?usort
是不是已知慢/有缺陷/有bug?应该使用另一种方法吗?还是自己写实现?
microtime
调用,但由于服务器其他方面没有占用,这真的不是问题。排序块是问题所在。 - Davor