PHP: 보다 빠른 echo를 위하여 – 콤마(,) 보다 나은 도트(.)

PHP 언어에서 print 보다 echo가 빠르다는 것은 널리 알려진 사실이다. 이런 차이는 print의 경우 반환값(1)이 존재하기 때문인데, 물론 이런 반환값 때문에 수식 내에서 사용 할 수 있다는 장점도 있다. 예를 들어 $result = ($n > 1) ? $n : print $n; 과 같은 식을 쓸 수 있다.

그럼 echo는 어떻게 사용해도 똑같을까? 그렇지는 않다. echo 또한 어떻게 사용하느냐에 따라 속도가 다르다.

이 두 코드는 완전히 동일한 결과를 출력하지만, 후자가 더 빠르고 바람직 하다.

좀 더 자세히 이야기 하자면 첫번째 코드는 "1", "2", "3", "\n"을 각각 출력한다. 정확히는 각 문장마다 write() 시스템 콜을 4번 호출한다.

후자는 4개 문장을 하나로 합친 후에 write()를 1번 호출한다. 후자는 1번만 호출하기 때문에 시스템 콜에 대한 오버헤드가 1번만 발생하고, 커널 영역에 진입하는 횟수가 상대적으로 적다. 사용자 영역에서 커널 영역으로 진입하는 횟수가 많은 것이 좋지 않다. 직접 확인을 해보고 싶은 사람은 strace로 시스템 콜을 확인 해 보는 것도 추천한다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다