PHPSCHOOL에 들어가 봤는데 PHP Benchmark 라는 사이트 정보가 올라와 있더군요. 들어가 보니 오~ 그동안 PHP를 사용하면서 궁금하던것들이 들어 있네요.
새로고침 할때마다 비교 값들은 계속 변경됩니다. 내용을 조금 정리하면
…
3. 문자열 출력 시 echo(dot) vs echo(comma) vs print
echo 와 print만의 비교가 아니라 쩜(dot)과 콤마(comma)를 사용할때의 비교도 되어 있네요.
개발과정에서 문자열(“somestring”)만 출력하는 경우는 별로 없기에 변수와 문자열을 혼합하여 출력하는 것을 보면 echo(comma)가 그나마 더 빠르네요.
echo ‘aaaaaaa’,$a,’aaaaaaa’,$a
…
5. 반복문으로 수정 시 foreach() vs for() vs while(list() = each())
Loop를 이용하여 배열이나 객체의 내용을 변경할때 어떤 반복문이 더 빠른지 비교했네요.
결과는 array_keys를 이용한 for 문이 가장 빠르네요. foreach() 문을 쓰시는 분들은 소스 수정을 고민하셔야 겠네요.
$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= “a”;
…
9. 반복문으로 내용을 읽을때 foreach() vs for() vs while(list() = each())
사실 원문에서는 한참 밑에 있는데 위 5번과 같이 이야기 하는것이 더 좋을것 같아 이곳으로 옮겼습니다.
이번에는 Loop를 이용해서 배열이나 객체의 내용을 가져올때 어떤 반복문이 더 빠른지 비교했네요.
결과는 foreach()의 압승입니다. 고민하지 마시고 foreach()를 쓰시면됩니다. $value만 추출하는 것이 $key => $value보다 더 빠르지만 $key => $value도 다른 것에 비해 무지 빠릅니다.
foreach($aHash as $val);
foreach($aHash as $key => $val);
…
6. 제어구조에서 switch/case/default vs if/elseif/else
if를 쓸것인가? switch를 쓸것인가?? 고민하고 있는 분도 있을건데요. 비교 결과만을 봤을때 switch나 if가 비슷하게 나옵니다. 그냥 편한쪽을 사용하시면 될것 같네요.
7. 8. 참조 vs 대입
참조와 대입에 대한 비교는 2가지가 있는데 object의 method와 배열에 대해 참조를 할때와 대입을 할때의 비교가 있습니다. object의 method를 실행한 결과를 받을때는 대입이 빠르고(메모리는 참조가 더 적겠죠???) 1차 배열의 값을 받을때는 참조가 더 빠르다!!! 2차 배열부터는 결과가 바뀌는데요 대입이 더 빨라집니다.
결론적으로 1차 배열일 때는 참조를 하면 빨라지는데 다른 경우는 대입하는것이 더 빠르다.
$alias = &$aSingleDimArray[$i]
$obj = $someClass->f();
$alias = $aMultiDimArray[$i]["aaaaa"]["aaaaaaaaaa"]
…
10. Quote Types – 더블(“) vs 싱글(‘)
이것도 참 말 많은 것 중 하나죠? ^^;;;
결론은 “그닥 차이가 거의 없다”입니다. 둘중 어느것이 더 빠른지 이야기 하지말고 반복문이나 고치는 것이 좋을것 같습니다.
11. 반복 개수 – 미리 확인 vs 그때그때 확인
제목은 Counting Loops – For-loop test 입니다만, 내용상 제가 제목을 바꾸었습니다.
제목그대로 for문 Loop를 할때 반복회수를 미리 변수에 담아두어서 하는것과 for문 속에서 반복회수를 구하는 것에 대한 비교입니다. 반복회수가 Loop 작업중 변하는 것이 아니라면 미리 변수에 담아 두고 사용하는 것이 아주아주아주 빠르네요.
아무리 빠른 PHP라고 하지만 조금더 신경써서 프로그램을 하면 아주 빠른 프로그램이 만들어 질것 같습니다. 또 그만큼 서버의 리소스를 적게 쓰는것이고 이것은 그만큼 많은 접속을 처리한다는 것이니 조금 쪼잔해 보일지 몰라도 신경써야 할것 같습니다. ^^




무료 DDNS, 짧은 URL 지원, 소소한 수익금까지 ^^
해외 쇼핑몰 할인 쿠폰과 적립금 지급 사이트입니다.
eTorrent – 토랜트파일 다운로드 이토렌트
무료 DNS 서비스, DDNS, 포워딩에 파킹까지