如何提高这个PHP代码的性能?

时间:2015-09-24 22:45:03

标签: php algorithm performance

这是我正在使用的php代码的结构

$Objects = $account->api1(); // This returns an object array with each object being O(data1, data2, data3)
$retValue = array();
foreach($Objects as $O)
{
    if($O->data2 == 'something')
    {
        $data4 = $account->api2($O->data2); // returns a value $data4
        // Initialize $tmp;
        $tmp->data1 = $O->data1;
        $tmp->data3 = $O->data3;
        $tmp->data4 = $data4;
        $retValue[] = $tmp;
    }
}

基本上我需要的是以下对象数组,data2 ='something'

 O(data1,data3,data4)    

有没有办法可以简化这个过程。每个API呼叫都需要花钱,并且还涉及跨请求的请求,这使得这个过程既昂贵又缓慢。无论如何,这可以改进吗?性能/没有通话的改善都会有所帮助。

1 个答案:

答案 0 :(得分:0)

重要提示:我假设您的问题中存在一些拼写错误以及以下等值

  • $data2表示$O->data2 已修复问题
  • $O->data4表示$data4 已修复问题

调用$account->api2($O->data2)应始终返回相同的值 因为你总是检查$O->data2是否等于"某事" .. 所以你可以只召唤一次,每当你受到打击时都会这样做。

<?php

    $Objects = $account->api1(); // This returns an object array with each object being O(data1, data2, data3)
    $retValue = array();

    foreach($Objects as $O)
    {
        if($O->data2 == 'something')
        {

            // Here, you just call api2 the first time (or never, maybe, if you never needed to)
            $data4 = isset($data4) ? $data4 : $account->api2($O->data2);

            // Initialize $tmp;
            $tmp->data1 = $O->data1;
            $tmp->data3 = $O->data3;
            $tmp->data4 = $data4;
            $retValue[] = $tmp;
        }
    }

?>