또 다른 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);
}
그리고 후세를 위해서
이 방법은 내가 coord2intfunction coord2int($x, $y){
return ($x*8)+$y;
}
업데이트를 위해 쓴 : 그래서
을 이상한 땅에, 결과는 내가 기대하지만 사전을 사용하고 있었다하지 무엇인가 계산 된 조회 테이블이 우세하게 가장 빠른 것으로 나타났습니다. 속도에 대한 거래 메모리가 항상 우승자입니까?
- 여기에 시간이있는 테이블이 있었지만 나는 그걸로 스타일링 문제로 인해 그것을 잘라 버렸습니다.
당신이 비트 시프트 연산자를 사용할 수 계산을 필요로하는 코드에서 비트 연산을 인라인 8로 나누고 곱 하시겠습니까? (<< 3 and >> 3) –
PHP에서 많은 비트 조작을 수행하지는 않았지만 모든 표준 비트 연산자 (AND, XOR, OR + 시프 팅)를 사용하므로 가치가 있습니다. – David