PHP 성능 향상 방법
용영환 PHPKorea
성능 = 속도 = 비용 = 이익?
속도의 중요성
Bing

1초 늦어지면 2.8%
2초 늦어지면 4.8% 수익 감소

Google 0.4초 늦췄더니 0.76% 검색 감소
Yahoo! 0.4초 늦어지면 5~9% 트래픽 감소
몇 초 안에 보여줘야 하는가
2초의 의미
Load time 2초
= 웹브라우저에 다 보여지는 시간
2초의 의미
전체 = 2.67초
onload = 2.13초
2초의 의미
전체 = 3.92초
onload = 2.96초
몇 초 안에 보여줘야 하는가
네이버
월간 마이크로소프트웨어
읷반적읶 웹사이트
3초 이내에 onload 이벤트 발생
4초 이내에 전체 요소 로딩 완료
이정도를 읷반적읶 웹사이트 속도라고 합시
다.
읷반적읶 웹사이트

대기시간 = 387ms
전송시간 = 243ms
유명 포털사이트

대기시간 = 22ms
전송시간 = 102ms
유명 포털사이트

대기시간 = 22ms
전송시간 = 102ms
속도의 중요성 (재탕)
Bing

1초 늦어지면 2.8%
2초 늦어지면 4.8% 수익 감소

Google 0.4초 늦췄더니 0.76% 검색 감소
Yahoo! 0.4초 늦어지면 5~9% 트래픽 감소
그래서…
우리는 대기시간을 줄여보자.
대기시간
= 서버 내부 처리 시간
= PHP + DB 에서 소비하는 시간
 DB 튜닝 방법은 “Real MySQL” 에서
PHP 속도를 높이려면
1. 쪼금이라도 빠른 PHP 코드 사용하기
2. 캐시 사용하기
3. 느린 코드 리펙토링 하기
쪼금 더 빠른 PHP 코드
echo ‘Hello’

196 microsec.

print ‘hello’

218 microsec.

http://phpbench.com
쪼금 더 빠른 PHP 코드
echo ‘Hello’

196 microsec.

print ‘hello’

218 microsec.

1 microsec.= 1/1000 milisec.
1 ms 동안 echo 5번 , print 4번
쪼금 더 빠른 PHP 코드
foreach($aHash as $key => $val);
22 microsec.

while(list($key,$val) = each($aHash))
160 microsec.

게시판 글 50개 = 160 * 50 = 8 milisec.
반면, foreach는 22 * 50 = 1 milisec.
쪼금 더 빠른 PHP 코드
Function vs. closure vs. lambda
그런데…
저런 것들 다 신경 쓰다간 ‚Mental crash‛
그냥… 방을 치워
사회적 동물로서 살아남는 방법
뜬금 없지만… 진리이기도 한…
‚티끌 모아 봤자, 티끌이다.‛ - 박명수 어록
그냥…
PHP 버젂을 올리세요.
5.3은 5.2보다 약 20% 빠르고
5.4는 5.3보다 30% 정도 빠릅니다.
캐시 사용하기
기본적읶 PHP 실행
PHP Script

Parse

Compile

Excute

Output
Opcache PHP 실행
PHP Script
OPCache

Excute

Output
캐시 사용하기
PHP 5.5 부터 기본 탑재
Zend OPCache 만 적용해도 40% Up

http://www.php.net/manual/en/opcache.installation.php
느린 코드 리펙토링 하기
느린 코드 리펙토링 하기
느린 코드 찾겠다고
산을 다 파헤치지는
말자.
프로파읷링
프로그램이 실행되는 과정을 기록하여
개발자가 읶간으로 살 수 있게 돕는다.
^__^
프로파읷링
많이 쓰는 디버거
- Xdebug = 무료
- Zend debug = 사실상 유료
프로파읷링
많이 쓰는 분석툴
- WinCacheGrind = 무료
- Kcachegrind = 무료
프로파읷링
가장 많이 쓰는(?) 조합
Xdebug + WinCacheGrind = 무료
프로파읷링
DEMO
병목? 어떻게 테스트 하는가
DEMO
주의! 검거 될 수 있습니다.

[PHPFest 2013] PHP 성능 향상 방법