作爲一個有趣的項目幫助我學習另一個PHP MVC框架,我一直在寫Reversi/Othello作爲一個PHP的& Ajax應用程序,大多是直截了當的東西。我決定不使用多維數組有多種原因,而是有一個線性數組(本例中爲64個元素)以及一些將座標轉換爲整數的方法。將整數轉換爲笛卡爾座標的替代/更快方法?
所以我很好奇,有沒有其他的,可能更快的算法將整數轉換爲座標點?
function int2coord($i){
$x = (int)($i/8);
$y = $i - ($x*8);
return array($x, $y);
}
//Not a surprise but this is .003 MS slower on average
function int2coord_2($i){
$b = base_convert($i, 10, 8);
$x = (int) ($b != 0 ? $b/8 : 0); // could also be $b < 8 for condition
$y = $b % 10;
return array($x, $y);
}
和對子孫後代着想,方法我寫了coord2int
function coord2int($x, $y){
return ($x*8)+$y;
}
更新:在奇怪的土地
因此,結果不是我所期待的,但使用預計算查找表主要表現爲最快,猜測交易內存的速度永遠是贏家?
- 在這裏有一個表與時間,但我削減它由於與SO的樣式問題。
你可以使用的比特,移位運算符除以8乘以? (<< 3 and >> 3) – 2009-02-03 14:38:10
我沒有在PHP中做過多的位操作,但它確實有所有的標準位操作符(AND,XOR,OR +移位),所以值得一試。 – David 2009-02-03 14:43:48