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

如何提高这段PHP代码的性能?,php,algorithm,performance,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

这是我正在使用的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调用都要花费金钱,而且还涉及跨请求的请求,这使得这个过程既昂贵又缓慢。这还能改进吗?即使是性能上的一点点改进/通话次数的减少也会非常有帮助。

重要提示:我假设您的问题中有一些拼写错误和以下等价项

  • $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;
        }
    }

?>


能否实现请求缓存?如果你需要在数据集上进行循环API调用,那么API设计似乎很糟糕。不要认为他会这样做,因为每次请求都会花费“金钱”,这意味着API是外部服务。如果你在自己的情况下进行分配,我想这不是你想要做的
if($O->data2='something')
应该是
if($O->data2=='something')
什么是
$data2
?(同样,这个问题更可能适合于代码审查Comunity)另一件事:您这样做$data4=$account->api2($data2)但您从不使用
$data4
。。。。