如何提高这段PHP代码的性能?
这是我正在使用的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
$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
。。。。