在大规模运行时编程DRY或优化速度?

时间:2013-11-22 01:43:05

标签: php performance optimization dry

我试图弄清楚是否有任何情况绕过DRY编码,因为它可以避免大的查询/功能。

基本上,我可以在每次需要时计算变量(学生的财务余额)或将其存储为单个变量,并在每次付款时更新该变量。我的猜测是,即使它通过一千次付款循环,最好每次计算以保持干燥。但更重要的是这种情况,因为数据库调用或更复杂的操作可能会占用更多的时间或处理速度。

示例php代码:

$payments = array(
    array(
        'plan'  => 100,
        'fees'  => 0.10,
        'paid'  => 110      
    ),array(
        'plan'  => 100,
        'fees'  => 0.05,
        'paid'  => 105  
    ),array(
        'plan'  => 100,
        'fees'  => 0.15,
        'paid'  => 115      
    ),
);

function calculate_balance($payments){
    $max = count($payments);
    $balance = 0;
    for($i=0;$i<$max;$i++){
        $balance = ($payments[$i]['plan'] * (1 + $payments[$i]['fees'])) - $payments[$i]['paid'];
    }
    return $balance;
}
// either save balance as a varaible and only adjust when new payment made...
// or calculate the balance every time it's needed 

是否存在我应该存储变量而不是每次都计算它的情况?

非常感谢!

2 个答案:

答案 0 :(得分:2)

每次计算它的问题当然是性能。

仅更新先前结果的问题是正确性。 如果出现问题,你就不一定知道。

两种方法都是使用更新方法,但偶尔会从头开始重新生成。 在此过程中,您可以判断更新的值是否错误,并使用它发出警告以尝试找出错误。

答案 1 :(得分:1)

首先,让它工作。如果代码没有给出正确的答案,那么代码的速度并不重要。

然后,测量一下它需要多长时间。这花了太长时间?如果没有,那么你没有什么可以优化的。

如果您需要加速代码,那么您必须使用代码分析器进行测量,以找出代码的哪些部分花费的时间最长。对于PHP,请使用XDebug。