首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中累积计数性能缓慢

PHP中累积计数性能缓慢
EN

Stack Overflow用户
提问于 2014-03-24 12:55:11
回答 1查看 84关注 0票数 0

我在图表控制器中有一些性能问题。我有两个数组:一个数组有日期,一个数组包含实体,实体也包含日期。我要累积计算实体的日期值。

我确实有一些代码,但速度很慢(数据数组中的68k行需要等待3-4秒)。

我的代码:

代码语言:javascript
复制
// Loop through the SQL results and count on date
    foreach ($result as $row) {
        foreach ($dates as $date => $value) {
            // $row['appointmentDate'] is a DateTime object
            if ($date >= $row['appointmentDate']->format('Ymd')) {
                $dates[$date]++;
            }
        }
    }

是否有更聪明/更好/更快的方法来实现这一点?

//编辑

杰克给了我我所需要的动力,我解决了我的表演问题。

上面的代码花了38000毫秒完成,代码低于5700毫秒。

代码语言:javascript
复制
    usort($result, function($a, $b) {
        return $a['appointmentDate'] > $b['appointmentDate'];
    });

    // Loop through the SQL results and count on date
    for ($i = 0; $i++; $i <= count($result)) {
        $i++;
        $dates[$result[$i]['appointmentDate']->format('Ymd')] = $i;
    }

谢谢你的帮助,杰克!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-24 13:11:05

是。在进行比较之前,通过对这两个数组进行排序,可以获得更好的性能。通过排序两个数组,您可以避免执行n*m循环,并保持n+m复杂性(加上n*log nm*log m进行排序,这至少小于n*m)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22610030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档