作为一个有趣的项目帮助我学习另一个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