CI 묻고 답하기

제목 코드이그나이터 성능
카테고리 CI 2, 3
글쓴이 우량 작성시각 2017/02/23 13:27:35
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13526   RSS

안녕하세요.

3.0 버젼 문서에서 템플릿 엔진이 깨끗해 보이지만 성능이 더 떨어진다는 얘긴가요?

1번과 2번의 성능차이가 어떤것이 더빠른가요? 제가 이해하기로는 2번이 코드는 깨끗하지만 재해석을 해야해서 1번이 더빠르다고 설명하는거같은데요.

1.

<ul>
<?php foreach ($addressbook as $name):?>
        <li><?=$name?></li>
<?php endforeach; ?>
</ul>

 

2.

<ul>
{foreach from=$addressbook item="name"}
        <li>{$name}</li>
{/foreach}
</ul>

----------------------------------------------------------------------------------------------

 

CodeIgniter 가 간단한 템플릿 파서를 포함하고 있긴 하지만, 반드시 사용할 필요는 없습니다. 템플릿 엔진은 PHP 문법과 간단히 매치되지 않기 때문에 거의 PHP를 배우는 만큼의 학습 노력이 필요합니다.:

<ul>
<?php foreach ($addressbook as $name):?>
        <li><?=$name?></li>
<?php endforeach; ?>
</ul>

아래는 템플릿 엔진을 사용할 경우 입니다:

<ul>
{foreach from=$addressbook item="name"}
        <li>{$name}</li>
{/foreach}
</ul>

맞습니다, 템플릿엔진쪽이 조금 더 깨끗해보이긴합니다. 그러나 위 코드는 반드시 재해석의 과정을 거쳐야하기 때문에 성능이 떨어집니다. 우리의 목표는 최대의 성능이기 때문에 템플릿엔진을 사용하지 않습니다.

 다음글 ajax사용 시 페이지네이션 질문입니다. + (페이징a... (11)
 이전글 코어 확장문제..ㅜㅜ 계속 안되네요 (20)

댓글

kaido / 2017/02/23 13:32:36 / 추천 1

단순히 foreach 돌리는것 말고도 템플릿파서를 사용하면 다른 것도 신경 많이 써야합니다.

성능차이는 눈에 띌 수준은 아니지만 분명 파서 돌리는게 더 자원을 먹구요.

 

흔히 페이지의 호출 패턴을 요약하면

컨트롤러 - 모델 - 컨트롤러 - 뷰

이런 패턴이라면

컨트롤러 - 모델 - 컨트롤러 - 파서 - 뷰

이런 패턴이 되니 당연하게 자원을 더 먹는 겁니다.

우량 / 2017/02/23 14:00:56 / 추천 0
네 그러니 파서가 포함된 2번이 성능상으로 해석을 더해야되서 좀더 자원을 먹는다는거죠?
kaido / 2017/02/23 14:05:23 / 추천 1

네. 그렇습니다.

반드시 더 먹습니다.

단순히 사용하는 정도면 성능차이는 사실 그렇게 눈에 띌 정도는 아닙니다. 신경 안써도 될 수준 입니다.

그런데 막상 써보면 템플릿 파서 사용하려면 신경 쓸게 한두개가 아닙니다.

우량 / 2017/02/23 14:07:50 / 추천 0

상세한 답변 감사합니다!

파서를 쓰는게 코드는 확실히 더 깔끔하네요.