웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
서버가 느려졌을경우...
2004.06.28 13:29
(뭐..여러가지 이유가 있겠지만..php 파일로 싸이트를 구성하였을때의 예 입니다.)
주석을 포함해서 파일의 크기가 크면 클수록 속도가 늦어지더라고요.
아무내용도 없이 주석으로만 10kb 짜리 일때 초당 500개 정도 처리되고
주석으로만 300kb 일때, 초당 10개 정도가 처리되더군요.
결론은 PHP 의 속도향상을 위해서는 파일의 크기 자체를 최소한으로 작게 해야하고
클래스 파일등도 잘게 나눠서, 필요한 클래스만 포함을 하던지..
무슨 방법을 써야 될듯 합니다.
이외에 다른 속도향상 방법을 알고 계신분.. 리플좀 달아주세요 ^^
(요즘 속도 향상때문에 골치가 아푸네요 ^^)
주석과 관련한 재미있는 테스트를 한번 해보시죠.
가령 같은 내용의 커다란 주석을..
/*
주석
주석
....
주석
주석 */
와 같은 형태로 했을때와
// 주석
//주석
....
//주석
//주석
와 같은 형태로 했을경우에
전자는 주석의 크기가 커지는 만큼 속도가 느려집니다..
한마디로 파일안의 주석은 왠만하면 삭제 하시는게 좋을듯합니다..
제로보드의 경우 초보들이 알게 쉽게 주석을 많이 넣어두었는데요...
주석은 삭제하고 서버로 올리는게 좋을듯 하구요..
그럼 파일 자체의 크기를 주릴수 있으니.. 클라이언트의 컴퓨터가 빨리 화면을 띄우겠죠.^^
* DeX™님에 의해서 게시물 이동되었습니다 (2004-06-28 19:02)
주석을 포함해서 파일의 크기가 크면 클수록 속도가 늦어지더라고요.
아무내용도 없이 주석으로만 10kb 짜리 일때 초당 500개 정도 처리되고
주석으로만 300kb 일때, 초당 10개 정도가 처리되더군요.
결론은 PHP 의 속도향상을 위해서는 파일의 크기 자체를 최소한으로 작게 해야하고
클래스 파일등도 잘게 나눠서, 필요한 클래스만 포함을 하던지..
무슨 방법을 써야 될듯 합니다.
이외에 다른 속도향상 방법을 알고 계신분.. 리플좀 달아주세요 ^^
(요즘 속도 향상때문에 골치가 아푸네요 ^^)
주석과 관련한 재미있는 테스트를 한번 해보시죠.
가령 같은 내용의 커다란 주석을..
/*
주석
주석
....
주석
주석 */
와 같은 형태로 했을때와
// 주석
//주석
....
//주석
//주석
와 같은 형태로 했을경우에
전자는 주석의 크기가 커지는 만큼 속도가 느려집니다..
한마디로 파일안의 주석은 왠만하면 삭제 하시는게 좋을듯합니다..
제로보드의 경우 초보들이 알게 쉽게 주석을 많이 넣어두었는데요...
주석은 삭제하고 서버로 올리는게 좋을듯 하구요..
그럼 파일 자체의 크기를 주릴수 있으니.. 클라이언트의 컴퓨터가 빨리 화면을 띄우겠죠.^^
* DeX™님에 의해서 게시물 이동되었습니다 (2004-06-28 19:02)
댓글 20
-
키티해커스
2004.06.28 13:31
-
키티해커스
2004.06.28 13:29
그래서..
들여쓰기시 space문자 노~
주석안쓰기
최대한 간결하게 쓰기
쓸데없는 공백,줄바꿈 하지 않기
인터프린팅타임이 줄어들수록 체감속도는 빠르다..-_- -
9000㎒
2004.06.28 19:16
문제는 주석을 안달면 제작 6개월 이후 소스를 다시 봤을때 도데체 이게 뭔지 모른다는거죠.
차라리 빠르게 하려면 for 문이나 while 문보다는 foreach 문을 쓰고, ereg 대신에 preg 계열 함수를 써서 속도를 향상시키는것도 도움이 되겠지요. -
써니루루☆
2004.06.29 01:53
PHP 작동방식에서 주석은 스킵됩니다. 속도에 그다지 영향을 주지 않는다고 생각하시면 됩니다.
대신에 주석이 주는 영향은 source를 parser에 주기 위해 heap 메모리에 올릴때 그만큼을 먹거나 올리는 과정에서 skip 하게 됩니다.
또 include와 require를 적절히 사용해야 합니다. include는 실행시 동적으로 불러지지만 require는 정적으로 parsing 과정에서 이루어집니다.
또 클래스를 너무 과다하게 나누면 과다한 include나 require가 발생합니다. 이건 File I/O의 부담을 가중 시키는 것으로 CPU와 메모리 둘다 무리를 주게 됩니다.
위에 좋은 말씀 처럼 루프문이 가장 큰 영향을 준다고 생각하시면 되고, 루프도 가장 속도에 영향을 미치는 것이 배열에 관한 부분이며 배열이 다중배열일 경우 설계를 잘 하셔야 하고, 루프시 빠른 루프를 사용해야 합니다. while(list()=each()) 구문 보다는 foreach()를 또는 array_keys()나 array_values() 함수의 조합으로 또는 for문으로 여러가지 상황에 맞는 접목이 중요하며 이전버젼의 PHP를 지원하기위해 감수해야할 속도의 낭비는 어느정도 감수해야 할 때가 있습니다.
PHP 메뉴얼의 마지막 부분을 참조하면 약간의 팁이 있을 수 있습니다.
PHP Code의 최적화는 Zend 사이트에서 이미 2000년도에 테스트를 여러가지 한 자료가 많은 것으로 알고 있습니다.
또 SQL의 쿼리의 최적화도 중요합니다. 대부분의 서버 자원의 메모리를 먹는 것이 SQL이기 때문이죠. -
써니루루☆
2004.06.29 02:00
아 또 한가지 File 의 Lock 이나 SQL Table의 Lock을 이용했을때 서버 프로세스의 상호배제 때문에 DB 자원의 무결성을 지키기 위해 Syncronize 하게되면 이때 서버의 자원이 낭비되고 CPU도 점유 상태가 되면서 서버에 악영향을 미칠 수 있습니다. Lock 때문에 낭패를 본적이 있어서;; -
페리
2004.06.29 09:22
아~.. 이건 또 무슨 말씀이란 말인가;;
써니루루님 말씀은 마치 딴 세계 사람의 이야기를 듣는것같고 -_-;;
PHP의 길은 이렇게 멀고도 험한것인가... 를 실감하게 되는 왕초보는.. 멍한.. 그 자체;; -
9000㎒
2004.06.29 13:31
페리 // 전혀 다른 소리가 아니지요; (물론 두번째 코멘트가 무슨 소리인지 모를 수도 있습니다 ;) ) -
9000㎒
2004.06.29 15:33
참. " 대신에 ' 를 이용하면 PHP 엔진은 파싱을 안한다고 하더군요 (투덜이 PHP에서 예전에 봤던 내용) -
ⓜASE™
2004.06.29 23:45
그리고 서버의 CPU 종류에 따라, 미미하지만 차이가 있다고 합니다.
RISC 방식의 서버(PowerPC칩셋)와 CISC방식(대부분의 인텔 제품)은 서로 코드가 같아도 속도가 다르다고 하네요. -
ⓜASE™
2004.06.29 23:46
그래서 각 CPU에 맞는 PHP 문법을 쓰면 더 향상될수도 있죠. 이 내용은 좀 찾아봐야 나올겁니다. -
TheMics
2004.06.30 12:57
주석에 관한 간단한 실험입니다;
http://www.nzeo.com/bbs/zboard.php?id=p_qa_new&no=13991
인용)
제가 아이쿠님 말씀대로 아주 간단한 프로그램에 주석을 1.1메가 정도 달아서 테스트해 보았습니다.
주석 달았을 때 0.000095초, 그렇지 않은 경우 0.000084초 정도였습니다.
0.000011초 가량 차이가 나더군요; 무시하시고 쓰시면 됩니다^^; -
u2em
2004.06.30 13:05
html 주석은 서버와 클라이언트 둘다 큰 곤욕입니다. 클라이언트(웹브라우저)는 주석도 파싱하기 때문이죠.... 제로보드 라이센스를 표기하지 않으면 0.1초 이상 빨라질지도... -
플로렐라
2004.07.03 13:04
최대한 "대신 '를 쓰고있죠.
고급언어인 php로 RISC나 CISC에 맞게 설계한다는건 무리죠.
어셈블리라면 모를까..
for은 while의 변형으로 볼수있고,
goto문이있으면 if와의 조합으로 루프문을 만들수도 있는... (딴얘기;)
출력을 빠르게 하는건 echo로 따옴표로 둘러서 하는것보다,
변수에 저장해서 한번에 출력하는게 빠르다고 들은... -
토끼군
2004.07.05 13:44
주석이 여러 개로 나뉘어 있으면 파싱할 때 별도의 토큰으로 파싱해 버리기 때문에 약간 차이가 더 날 수 있는 것은 맞습니다...만 별 차이는 주지 않을 것 같군요.
당연한 말이지만 최적화를 할 때에는 가장 부하가 많이 먹는(php의 경우 SQL 같은 것이 그 중 하나죠) 부분만 최적화하는 게 더 낫습니다.
(예를 들어서 전체 수행 시간의 35%를 잡아 먹는 걸 50% 최적화한다면 전체 수행 시간이 17.5% 줄어 들겠지만, 5%를 차지하는 부분을 90% 차지하면 시간이 4.5% 절약될 뿐이죠 :)
따라서 프로그램을 작성할 때는 최적화보다 소스의 가독성을 높게 하고 유지 보수가 편리한 형태로 만드는 쪽이 더 좋습니다. 최적화 한다고 소스를 읽기 어려울 정도로 한다고 해서 그 효과가 동일한 게 아니니깐요. :p (이른바 "선택적인 최적화"라 하겠습니다.) -
토끼군
2004.07.05 13:45
물론 전체적으로 모든 부분이 빠르고 인터프리팅 시간의 영향이 상당히 크다 싶으면야 눈물을 머금고 소스를 통째로 최적화해야 겠습니다만 T_T -
☺심심
2004.07.05 19:35
include_once ;; -
teslaMINT
2004.07.12 20:55
require_once
php 버전에 주의합시다. -
천상원
2004.08.11 10:28
주석을 제거함으로써의 개발자들에게는 약이되지 않아요.
9000Mhz님의 말처럼 어느정도 세월이 지나서 그 코드를 다시 보게되면 알아보기가 어렵다는 겁니다. 책에서도 언급되었는데... -
카린☆
2006.04.28 22:14
어디서 들은말인데.. 주석이 있으나 마나.. 별로 차이가 없다는데요 -
박종훈
2006.10.07 11:41
주석을 뺀다면, 안되죠;
[나중에 관리할때 주석이 없으면 그만큼 손해일수 있습니다.]
TheMics님의 말씀을 들어보니, 시간도 얼마 차이나지 않고요;
제목과 내용이 약간 다른듯합니다.
내용은 php최적화[?] 관련 내용이다만, 제목은 서버속도 관련 인데;
[저는, 제목보고 서버튜닝관련 글인줄 안;]
물론, 주석이 많으면 약간;;;;; 느려지기 마련입니다;
제목 | 글쓴이 | 날짜 |
---|---|---|
rand함수와 mt_rand함수의 비교 [6] | 심심타 | 2004.07.30 |
트랙백 구현하기 - 4. PHP로 트랙백 핑 받기 | TheMics | 2004.07.18 |
트랙백 구현하기 - 3. PHP로 트랙백 핑 보내기 [4] | TheMics | 2004.07.18 |
히어닥 문법 활용 [14] | ☺심심 | 2004.07.13 |
++와 +=1 의 속도차이 [7] | 플로렐라 | 2004.07.12 |
<와 <=의 속도차이? [23] | 플로렐라 | 2004.07.07 |
서버가 느려졌을경우... [20] | 신상우 | 2004.06.28 |
파일업로드시 파일명 중복되지 않게 저장하기.. [8] | 페리 | 2004.06.28 |
페이지에 암호를 걸자..=_= [27] | ☺심심 | 2004.06.25 |
아이피 접근을 막고 메세지 출력하기.. [11] | ☺심심 | 2004.06.24 |
오늘의 명언을 출력해주는 함수 [10] | 김재경 | 2004.06.15 |
3. if문 [13] | 티다 | 2004.06.05 |
응용편 - BMI 측정 테스트 소스를 만들어보자 [5] | 티다 | 2004.06.04 |
게시판내용에 코멘트를 달자!! -마지막- [2] | 이혁 | 2004.06.03 |
게시판내용에 코멘트를 달자!! -2- [1] | 헉스 | 2004.06.02 |
게시판내용에 코멘트를 달자!! [3] | 헉스 | 2004.06.02 |
2. array [5] | 티다 | 2004.06.02 |
1. 연산자 [2] | 티다 | 2004.06.02 |
주식정보출력코드 [2] | 김재경 | 2004.06.01 |
윈도우계정에서 현재 남은 용량과 DB 용량 알기 [6] | 지으니 | 2004.05.31 |
html 코드 ... <? PHP코드 조금 ?> html 코드..
식으로 되어 있다면, PHP는 <? ?> 태그 안의 내용만 파싱하므로,
fopen으로 여는것과 별반 차이가 안나는 속도로 처리하지만..
<? echo "html코드전체"; ?> 로 처리하면 PHP가 이를 전부 파싱하므로
속도가 당연히 느려지겠더군요