2012년 9월 5일 수요일

PHP 문자열 처리 속도비교


Single quoted, double quoted, heredoc syntax, sprintf 속도 비교

함수 설명
http://php.net/manual/en/language.types.string.php

double quoted (더블쿼터, 쌍따옴표) 가 Single quoted(싱글쿼터, 홑따옴표) 보다 속도가 느리다.
php 속도 높이는 팁에 흔히 나와있는 내용이다.
(double quoted 는 문자열을 파싱 하기 때문에 Single quoted 보다 느라다는 내용들이다.)

double quoted 가 느리다는 말에 난

$str = '백두산이';
echo '동해물과 ' . $str . '마르고 닳도록';
이런식으로 사용했다. 이게 당연히 빠를 줄 알았다. 근데 아니였다.


변수 사용이 없는 출력문에서는 Single qouted 가 Double qouted 보다 빠르다.
$output = '동해물과 백두산이 마르고 닳도록'; echo $output;
$output = "하느님이 보우하사 우리나라만세"; echo $output;
위 1번줄이 2번줄 보다 빠르다.

하지만 변수가 포함되면 결과가 틀려진다.
$str = '백두산이';
$output = '동해물과 ' . $str . '마르고 닳도록'; echo $output;
$output = "동해물과 {$str} 마르고 닳도록"; echo $output;
위 1번줄이 2번줄 보다 느리다.
1번줄 Single qouted 는 concat을 하기 때문에 느려진다는 것이다.


소스를 만들어서 테스트를 해보았다. 결과는 아래와 같다.

$str = '백두산이';

//1번
$output = '동해물과 ' . $str . '마르고 닳도록';
echo $output;

//2번
$output = "동해물과 {$str} 마르고 닳도록";
echo $output;

//3번
$output <<<EOD
동해물과 {$str} 마르고 닳도로고
EOD;
echo $output;

//4번
$output = sprintf('동해물과 %s 마르고 닳도록', $str);
echo $output;


빠른 속도 순으로
2번, 3번, 1번, 4번 이다.

heardoc 이 Single qouted 보다 빠르다는 것이 의외 였다.

댓글 1개:

  1. Casino (Luxor) - Mapyro
    Casino 안성 출장마사지 (Luxor). Mapyro (Luxor). Mapyro (Luxor). 시흥 출장마사지 Overview. Overview. Casino (Luxor). 광주광역 출장마사지 Location. 1 Highway 오산 출장마사지 80. 성남 출장안마 Las Vegas, Nevada

    답글삭제