i

PHP 속도를 향상시키는 방법들

출처 : http://blog.naver.com/xinfra/80007959672

★ 무조건 알아야 할 PHP 속도 테스트 14 가지 ◆◇◆◇◆◇


PHP로 코딩 함에 있어서 알아야 할 속도 테스트 입니다.
조금더 빠른 PHP 속도를 유지 하기 위한 것이죠 ^^

작은 것이 모여서, 대따 오랜 시간이 걸릴 수 가 있는 것 입니다. !!
되도록이면 속도가 빠른 것을 사용하시는 것이 좋습니다.

물론 함수 마다 기능 마다 장단이 있지만요....^^


다른 비교가 있으면 알려주셍 ^^ 답변 달아 주세용 ^^

계속 적으로 업글 됩니다. 현재 14가지 !!!!


==========================================================================
★ mysql 총 게시물 수 세기

$numresults=mysql_query("select code from $board");
$numrows=mysql_num_rows($numresults);
2초 이상 ...게시물 10만개

VS

$numresults=mysql_query("select count(code) as code from $board");
$row_num=mysql_fetch_array($numresults);
$numrows=$row_num[code];
0.2 ...게시물 10만개

아래것이 훠얼씬 빠름다..
도대체 mysql_num_row() 는 왜 만들어 놓은 것일까용???


==========================================================================
★ mysql_fetch_row > mysql_fetch_array >>> mysql_result


입니다.

row 가 array 보다 약간 빠르고, result 보다는 훠얼씬 빠름당 ^^

row 는 불편한게 숫자로 칼럼을 불러와서 불편합니다.
array 가 약간 느리지만, 문자 칼럼을 불러 올 수 있으니 array 쓰는 것도 양호 ^^

아직도 mysql_result() 를 사용하시나요?

==========================================================================
★print , echo ,printf 함수 속도 비교
HTML 출력 >> echo > print >> printf


print 와 printf 함수는 복잡한곳에 적격이고, 약간 느리다.

echo 는 단순한곳에 적격이고...빠르다.
printf 는 형식화된 출력을 해주므로 그래도 좋죠 ^^

==========================================================================
★ 인라인

a.php
<?
$aa="sdsdsdsd";
echo ("<table>
<td> $aa </td>
</table>");
?>

위 랑..

b.php
<? $aa="sdsdsdsd"; ?>
<table>
<td><? echo $aa; ?></td>
</table>

랑 도대체 어케 코딩 하느냐죠 ?

솔직히 코딩은 a.php 가 편합니다.
<? ?> 를 한번 만 쓰니까 효율적일 수 있습니당..

그러나 아무리 아무리 PHP가 빠르다고 해도 HTML 이 더 빠릅니당.. !!!

쿠쿠쿠

b.php 처럼 코딩 하는 습관을 가지세용 ^^

==========================================================================
★ zend cache , APC ,Bware 캐쉬 비교
Zend cache > APC > Bware

zend cache 는 캐쉬 입니다. 울나라에서 포탈에서도 몇군데 사용하죠.
PHP 프로그램 변환 없이 속도를 빠르게 해 줍니다. ^^

zend cache 를 살 돈이 없으시다구용?
그러면 APC 나 zend optimizer 를 반드쉬 설치 하세용 !!

■ 그런디 Zend Cache 만한 무료 캐쉬가 나왔다고 합니당...^^
http://www.php -accelerator.co.uk/index.php ;


==========================================================================
★ ereg_replace , preg_replace 정규표현식
ereg_replace () 가 장난 아니게 느림다.
40개 정도 변환 하는데 1초나 걸려요.preg_replace 는 0.3초 정도요.

되도록이면 preg_replace() 를 사용하세요 !!!

www.php.net/preg_replace


==========================================================================
★ foreach , list 함수 속도 차이 35%

foreach($string as $a); >>> while(list(,$a) = each($string));

foreach() 를 사용하는 것이 35% 정도 빠릅니다...!!


==========================================================================
★mysql_connect Vs mysql_pconnect

서로 장단이 있다 합니다.

mysql_pconnect 가 더 빠르다고 합니다.
persistant

메뉴얼에 영구적인 이렇게 되어 있으니까요..
일정시간 동안 mysql 을 열어 놓기 때문에, 다시 열 필요가 없어서 빠르다고 합니다.

단점은 계속 열기 때문에 메모리를 많이 잡아 먹슴당...^^
mysql_pconnect 경우는 최소 메모리가 1G 이상 되어야 사용하시는 것이 좋습니다.

==========================================================================
★ 큰따옴표(") , 작은 따옴표(')

큰따옴표는 PHP가 파싱을 합니다. 그러나 작은 따옴표는 파싱을 하지 않습니다.
작은 따옴표를 사용하시는 것이 빠릅니다.

코딩시 echo ' test '.$aaa.' tood ';
요런식으로 하시는 게 가장 빠름당 !!

==========================================================================
★ mysql 데이터 저장 공간 크기 ?


id int(11) unsigned NOT NULL auto_increment,
bbs smallint(5) unsigned NOT NULL,
lens mediumint(8) unsigned NOT NULL,


int 도 무자게 많슴당..
각각의 크기에 맞게 하는 것이 속도가 빨라 집니당 ^^

not null 를 주는 것도 속도가 빨라 집니당..

작은 사이트 조회수 경우 1만을 넘기도 힘듭니다. 그럴 경우 smallint 를 사용하시면 됩니다.

==========================================================================
★ where 절에 모든 것은 인덱스를 걸어라 !!!
mysql 에서 쿼리시에 where 절에 사용되는 비교의 칼럼은 반드쉬 인덱스를 거세용 !!!

mysql 인덱스 가 여러 분들의 게시판 속도를 업 시켜 줍니당 !!


==========================================================================
★메인페이지에서 속도를 빠르게 하려면, .htm 으로 만드는 것이 좋습니다.

그러니까..제 사이트 페이지 오른쪽 에는 모두 최신 게시물로 디비를 불러오는 부분
입니다.

디비 연결은 부하를 줄 수 있습니다.

그러니까..이예는 사이트가 상당히 활성화된 사이트일 경우 입니다.

하루에 2번 정도 .htm 으로 만들어 페이지를 업시키는 것이 좋습니다.
아무리 PHP가 빨라도 HTML 보다는 빠르지 않습니다.. !!!

그러기 위해서는 ★cron 를 알아야 합니다 PHP강좌 게시판에서 cron 으로 검색하세용 !!
윈도우 사용자는 멀 쓰는지 잘 모르겠슴당...아시면 답글 부탁 ^^


==========================================================================
★ 초보자 Vs 전문가

www.zend.com 에서 제가 2000년 5월에 퍼온건데용 ^^
함 주석을 붙일까 해서용^^


Beginner vs Experienced
Author: Boaz Yahav
Date 23/05/2000

Beginner : echo "$var";
Experienced : echo $var;


Beginner:echo "<a href=\" http://www.php.net\">PHP</a>"; ;
Experienced : ?><a href=" http://www.php.net">PHP</a><? ... ?> ;

◆ "(따옴표) 가 굉장히 중요한것이라는 한 대목이죵 ^^
전 보통의 경우 php 변수 값이 들어갈 경우는 초보자 처럼 쓰구요 ^^ 안들어 갈 경우 는 전문가 처럼 씀다.

Beginner : $a[0]=1; $a[1]=2; $a[2]=3;
Experienced : $a = array(1,2,3, 1);
둘다 사용하는 데요. 전문가 쪽이 편함다. ^^

Beginner : if($a>1) { $b=2; } else { $b=3; }
Experienced : $b = ($a>1) ? 2:3;
요건 완존히 소스 어렵게 짜는 넘이 최고 라는 소리 같네용 ^^
전문가 쪽것은 C 언어 에서 배웠는데도 역시 전 if 씀다. ^^

Beginner : $result=mysql_query(...);
Experienced: $result=mysql_query(...) OR die
(mysql_error());

요즘 들어 새삼 전문가 쪽으로 씀다.^^
보통의 경우

$result=mysql_query(...)
if (!$result)
{
echo error()."<P>";
echo errno();
}
이렇게 사용함다. ^^

or 이 설명이고 no 가 에러 번호 일 검다. ^^

==========================================================================
★MySQL,ADODB,PHPLib,PEAR 벤치마킹

ADODB > PHPlib > PEAR

MySQL 1.14 -
ADODB 1.45 27%
PHPLib 1.60 40%
PEAR 2.87 152% (fetchInto)

MySQL,ADODB,PHPLib,PEAR 는 모두 데이터베이스 인가요? 당근 아닙니다.
MySQL만 데이터베이스 구요.
ADODB,PHPLib,PEAR 는 PHP 프로그램 입니다.

3개 다 MySQL연결을 편하게 하는 클래스 프로그램 입니다.
그런디 벤치 마킹 결과 MySQL 에서 직접 쿼리하는 것 다음으로 ADODB 가 뽑혔슴당 ^^

PEAR 가 굉장히 늦군요. PEAR DB 나 ADODB 를 사용해 보았는데, 움..역시나 ADODB 가 좋군요.
오라클, mysql , ms sql 연결시 1개의 API 만 사용할 수 있는 프로그램 들 이 PEAR 과 ADODB 입니당 ^^
==========================================================================
★ 속도 테스트는 어케 하는가 ? microtime() 사용하면 됩니다.


<?

function pageTime($page) {
$mstart = explode(" ", $m);
$mend = explode(" ", microtime());
$mtime = ($mend[1] - $mstart[1]) + ($mend[0] - $mstart[0]);

echo " $m[1] $mend[1]<P>";
echo " $m[0] $mend[0]<P>";

print("tood.net 페이지 로딩 시간 : " . $mtime . " microseconds");
}
pageTime(basename($PHP_SELF));
?>

==========================================================================


==========================================================================

참고 사이트
http://www.tood.net
http://www.zend.com
http://www.php.net
http://www.php.lt/benchmark/phpbench.php
http://www.phpbuilder.com
http://www.phpbuilder.com/columns/piergiorgio20010321.php3?print_mode=1<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
|

댓글 9개

mysql_num_row()는 DB에서 데이터를 가져 왔을 때 수를 세는 것이고

select count(*)는 DB에서 해당 row의 숫자만 세서 그 수만 가져오는 것입니다.

경우가 다르죠.
echo ' test '.$aaa.' tood ';

대신 전 가끔

echo ' test ', $aaa,' tood ';

로 씁니다.

어느 것이 빠를까요?
preg_replace()는 정규식이 필요할 때 쓰는 것이고
단순한 문자열 치환이라면

str_replace()를 쓰세요.
어쨌거나 좋은정보 감사합니다...

php 문외한인 저에게 많은 도움이 될듯 합니다~~~~
izen님 감사합니다.

왕초보도 열심히 읽어보고 스크랩해갑니다. ^^;
계속 추가하신단 말 믿고 스크랩 해뿌렸습니다.
좋은 글 감사합니다.
사용잘하겠습니다.
책에서 못찾던게 여기 있군요.. ^^;;
감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
19년 전 조회 2,057
19년 전 조회 1,716
19년 전 조회 2,223
19년 전 조회 2,203
19년 전 조회 2,496
19년 전 조회 2,891
19년 전 조회 2,406
19년 전 조회 2,467
19년 전 조회 3,518
19년 전 조회 3,237
19년 전 조회 3,218
19년 전 조회 3,037
19년 전 조회 2,047
19년 전 조회 2,357
19년 전 조회 2,247
19년 전 조회 2,067
19년 전 조회 2,511
19년 전 조회 2,428
19년 전 조회 2,814
19년 전 조회 2,191
19년 전 조회 3,515
19년 전 조회 1,987
19년 전 조회 2,592
19년 전 조회 1,608
19년 전 조회 2,840
19년 전 조회 3,081
19년 전 조회 2,172
19년 전 조회 2,005
19년 전 조회 2,483
19년 전 조회 2,395
19년 전 조회 3,085
19년 전 조회 6,771
19년 전 조회 2,722
19년 전 조회 3,193
19년 전 조회 3,100
19년 전 조회 1,926
19년 전 조회 3,365
19년 전 조회 2,194
19년 전 조회 2,704
19년 전 조회 2,367
19년 전 조회 4,370
19년 전 조회 2,482
19년 전 조회 2,757
19년 전 조회 3,522
19년 전 조회 3,726
19년 전 조회 3,253
19년 전 조회 2,479
19년 전 조회 3,050
19년 전 조회 3,904
19년 전 조회 3,791
19년 전 조회 1,717
19년 전 조회 2,208
19년 전 조회 5,412
19년 전 조회 6,713
19년 전 조회 2,560
19년 전 조회 2,118
19년 전 조회 2,602
19년 전 조회 3,268
19년 전 조회 3,510
19년 전 조회 2,982
19년 전 조회 2,605
19년 전 조회 4,719
19년 전 조회 6,715
19년 전 조회 4,989
19년 전 조회 5,951
19년 전 조회 2,677
19년 전 조회 2,496
19년 전 조회 2,204
19년 전 조회 2,303
19년 전 조회 4,602
19년 전 조회 4,651
19년 전 조회 2,515
19년 전 조회 2,183
19년 전 조회 2,507
19년 전 조회 3,133
19년 전 조회 2,929
19년 전 조회 1,898
19년 전 조회 1,961
19년 전 조회 3,150
19년 전 조회 2,365
19년 전 조회 3,635
19년 전 조회 2,558
19년 전 조회 1,854
19년 전 조회 2,467
19년 전 조회 1,726
19년 전 조회 1,409
19년 전 조회 1,544
19년 전 조회 1,814
19년 전 조회 1,579
19년 전 조회 1,782
19년 전 조회 1,563
19년 전 조회 1,954
19년 전 조회 1,847
19년 전 조회 1,449
19년 전 조회 1,447
19년 전 조회 1,359
19년 전 조회 1,231
19년 전 조회 1,411
19년 전 조회 1,979
19년 전 조회 2,405