Upload
phpkorea
View
2.446
Download
5
Embed Size (px)
DESCRIPTION
PHPFest 2013
Citation preview
용영환 PHPKorea
PHP 성능 향상 방법
성능 = 속도 = 비용 = 이익 ?
속도의 중요성
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.installa-tion.php
느린 코드 리펙토링 하기
느린 코드 리펙토링 하기
느린 코드 찾겠다고
산을 다 파헤치지는
말자 .
프로파일링
프로그램이 실행되는 과정을 기록하여
개발자가 인간으로 살 수 있게 돕는다 .
^__^
프로파일링
많이 쓰는 디버거
- Xdebug = 무료
- Zend debug = 사실상 유료
프로파일링
많이 쓰는 분석툴
- WinCacheGrind = 무료
- Kcachegrind = 무료
프로파일링
가장 많이 쓰는 (?) 조합
Xdebug + WinCacheGrind = 무료
프로파일링
DEMO
병목 ? 어떻게 테스트 하는가
DEMO
주의 ! 검거 될 수 있습니다 .