[PHPFest 2013] PHP 성능 향상 방법

Preview:

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

주의 ! 검거 될 수 있습니다 .

Recommended