PHP Benchmark … 실행속도에 관한 궁금증.

PHPSCHOOL에 들어가 봤는데 PHP Benchmark 라는 사이트 정보가 올라와 있더군요. 들어가 보니 오~ 그동안 PHP를 사용하면서 궁금하던것들이 들어 있네요.

The PHP Benchmark

새로고침 할때마다 비교 값들은 계속 변경됩니다. 내용을 조금 정리하면

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라고 하지만 조금더 신경써서 프로그램을 하면 아주 빠른 프로그램이 만들어 질것 같습니다. 또 그만큼 서버의 리소스를 적게 쓰는것이고 이것은 그만큼 많은 접속을 처리한다는 것이니 조금 쪼잔해 보일지 몰라도 신경써야 할것 같습니다. ^^

Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

카테고리 Web태그, 댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중