웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[씽크식 PHP] 출력, 어떤 방법이 빠를까?
2002.05.29 18:48
당연한걸 가지고 강좌라고 쓰는게 우습겠지만 그냥 할일없을때 아무거나 적혀있는 글 읽듯이 읽으신다면 좋을것 같습니다. -ㅁ-
우선.. 여기서는 echo();의 실행 속도에 대해서 말하도록 하죠.
그전에 이 내용은 언제 한번 phpschool.com에서 본적이 있는걸 쓰는겁니다.
다음 두가지 스크립 중에서 어느것이 더 빠를지 맞춰보세요.
<?php
//1번
for($i=0;$i<10000;$i++)
{
echo("출력 테스트!!<BR>n");
}
?>
<?php
//2번
for($i=0;$i<10000;$i++)
{
$text.="출력테스트!!<BR>n";
}
echo($text);
?>
네, 2번 소스가 더 빠릅니다.
이유는 간단 하죠.
결과는 같아도.. 과정에서 1번은 만번이나 echo(); 를 호출하지만 2번은 한번만 호출합니다. -ㅁ-
호출시간을 계산한다면 2번이 빠릅니다.
한번 해보세요.
[참고]
php.ini에서 아웃버퍼링을 켜두면 속도는 오히려 1번이 빨라집니다.-ㅁ-
?>
우선.. 여기서는 echo();의 실행 속도에 대해서 말하도록 하죠.
그전에 이 내용은 언제 한번 phpschool.com에서 본적이 있는걸 쓰는겁니다.
다음 두가지 스크립 중에서 어느것이 더 빠를지 맞춰보세요.
<?php
//1번
for($i=0;$i<10000;$i++)
{
echo("출력 테스트!!<BR>n");
}
?>
<?php
//2번
for($i=0;$i<10000;$i++)
{
$text.="출력테스트!!<BR>n";
}
echo($text);
?>
네, 2번 소스가 더 빠릅니다.
이유는 간단 하죠.
결과는 같아도.. 과정에서 1번은 만번이나 echo(); 를 호출하지만 2번은 한번만 호출합니다. -ㅁ-
호출시간을 계산한다면 2번이 빠릅니다.
한번 해보세요.
[참고]
php.ini에서 아웃버퍼링을 켜두면 속도는 오히려 1번이 빨라집니다.-ㅁ-
?>
댓글 11
-
John Sync.
2002.05.29 18:50
-
jugug
2002.05.29 19:29
두개가 출력이 다른 소스 아닌가요?
위에는 "출력테스트" 만번 출력..
아랫건 한번출력.. -
최경수
2002.05.29 19:34
아랫것 소스 대괄호를 echo($text); 다음에 넣으시면 만번하겠네요.
for($i=0;$i<10000;$i++)
{
$text.="출력테스트!!<BR>n";
echo($text);
}
?> -
John Sync.
2002.05.29 20:18
jugug,최경수 // 변수뒤에 점(.)을 입력시키면 그 뒤에 포인터를 놓고 추가시키는겁니다.
$text.="출력테스트!!<BR>n";
$text=$text."출력테스트!!<BR>n";
두가지는 같은 효과란 말이죠.. -
mini
2002.05.30 11:37
안녕하세요 씽크님 ^^;
참고로 당연히 적은수의 루프에서는 버퍼를 거치지 않는게 빠릅니다.
( 대략 100개 이하정도.. 시스템에 따라 다르지요; )
이건 output_buffering 이 꺼져있어도 그렇습니다; -
cguy
2002.05.30 15:47
어제 인크루드한 php 파일들을 모조리 손봐줬습니다.
에코 출력방법 모두 바꿔줬고요. for 문을 다 while 문으로 바꾸는 노가다도 했고요.
확실히 퍼포먼스 타임이 좋아진것 같네요. ^^
당연히 적은수의 루프에서는 버퍼를 거치지 않는게 빠릅니다.
-> 이부분이 이해가 잘 가지않는데, 설명좀 해주세요. -
ZZir
2002.05.30 23:10
fot 와 while 중... 조건식에 따라서는 for 가 더욱 빠릅니다.
while($i < 10) {} 이런것은 비슷하지만,
while($row = mysql_fetch_array($result)) {} 이런건 속도차이가 많이 납니다.. -
ZZir
2002.05.30 23:11
즉 함수 쓸때는, for 문을 쓰는게 낫고 함수의 결과를 받아서 처리하는것이 낫습니다.
$c = count($arr);
for ($i = 0; $i < $c; $i++) {
do...something...
} -
TheMics
2002.05.31 08:27
$text.="출력테스트!!<BR>n";
만일 여기서 .을 =로 바꿔서
$text=="출력테스트!!<BR>n";
가 되면 한번만 출력되니 주의하세여;; -
슈퍼왕뚜껑
2002.06.08 18:20
이제껏 프로그래밍 하면서 만번씩이나 루프를 돌린적이 없어서..^^;; -
김용욱
2002.06.11 21:54
while에 함수를 넣어서 값을 받으신것 처럼 for에서도 값을 받으시면 성능상의 차이는 없습니다. while과 for는 취향의 차이이죠. 전 대부분을 for를 써서 해결하는 스타일입니다. c++ 어플리케이션을 짤때도 제가 제일 많이 쓰는 제어문중의 하나는 for( ; ; ) = 무한루프이죠. :)
제목 | 글쓴이 | 날짜 |
---|---|---|
마우스커서 움직임으로 이미지목록 스크롤 [1] | monozzang | 2005.03.13 |
브라우저를 동적으로 부드럽게 리사이즈 하는 소스 [4] | monozzang | 2005.03.06 |
가로 세로가 호환되는 메뉴 [3] | 이영준 | 2005.03.02 |
주소자동으로 이동 시키기(포워딩) [8] | 네츠키 | 2005.02.22 |
홈피 만들때 자주 사용되는 메타태그 모음 [18] | 김태영 | 2005.02.20 |
상위 셀렉트박스 값 변경시 하위셀렉트박스(다수)제어하기. [2] | Xian | 2005.02.19 |
뒤죽박죽어구 찾아내기 [6] | 미친개 | 2005.02.14 |
홈페이지index경로 이외의 하위 경로 차단 하는 방법 [펌] [10] | 프란시스 | 2005.02.05 |
허접한 메일 폼 검사 하기 스크립트입니다.. [1] | Ansi™ | 2005.02.06 |
간단하면서도 강력한 웹페이지에 암호걸기 [5] | 대류 | 2005.02.03 |
더 간단한 top 버튼만들기 [3] | 나상선 | 2005.01.21 |
페이지 경로 히스토리 표시하기 [0003] | EDENe | 2005.01.19 |
그냥 확 멋있는거 그냥그냥!!!! [3] | 미친개 | 2005.01.16 |
COPY & CUT 막기 / 경고 [0002] [10] | EDENe | 2005.01.16 |
홈페이지 TOP 버튼 만들기 + 응용 [0001] [2] | EDENe | 2005.01.15 |
로딩중 스크립트와 셀렉트창 같이 쓰기 [1] | 예뜨락 | 2005.01.13 |
홈페이지 탑 TOP 버튼 만들어보기 [9] | 편입성공기 | 2004.12.06 |
링크주소 감추기 [8] | 편입성공기 | 2004.12.06 |
팝업띄우기 [2] | 편입성공기 | 2004.12.06 |
개판 오분전 빙고 [2] | 미친개 | 2004.12.30 |
오타 났네요;;
제가 알기론 아웃풋버퍼링 설정은 디폴트가 off인걸로 알고 있습니다.