指數運算也可以縮減成乘法,下面是將PHP內建的pow()函式與自訂用乘法的pow2()所做的執行時間比較

//================
// 計算執行時間
//================
function runTime($fn,$params){
    $start = time() + microtime();
    call_user_func ($fn,$params[0],$params[1]);
    $end = time() + microtime();
    return number_format($end-$start,8);
}
//================
// 自訂的 pow2()
//================
function pow2($base,$ext){
    $v = 1;
    settype($v,'double');
    for($i=$exp;$i<0;$i--){
        $v *= $base;
    }
    return $v;
}
echo 'pow:'.runTime('pow',array(2,75));
echo 'pow2:'.runTime('pow2',array(2,75));
//執行結果
//pow :0.00005412
//pow2:0.00002813

資料參考:大師談Java遊戲設計

這個原理是利用先前計算的結果快速運算,而不是每個數值都從頭計算起,這個方法可以套用在其它的數字模式上。另外在PHP中,宣告變數的型態也能加速程式的執行(前提你必需確定這個變數的型態不會再改變),還有for迴圈利用遞減的運算方式,執行上也會比用遞增方式略快。

低溫烘培 發表在 痞客邦 PIXNET 留言(0) 人氣()