문제

웹 앱 템플릿 솔루션으로 Smarty를 고려하고 있으며 이제는 일반 PHP에 대한 성능에 관심이 있습니다.

Smarty 사이트는 그것이 동일해야한다고 말하지만, 진술을 옳고 그름을 증명하기 위해 실제 벤치마킹을하는 사람을 찾을 수 없었습니다.

Smarty vs Plain PHP의 벤치마킹을 한 사람이 있습니까? 아니면 그러한 테스트에서 몇 가지 리소스를 발견했을까요?

감사

도움이 되었습니까?

해결책

결국 Smarty는 템플릿 파일을 기본 PHP 코드로 컴파일하고 캐시하기 때문에 실제로 이론적 성능 차이는 없습니다. 물론 매번 해석 해야하는 Smarty 코드의 덩어리로 인해 항상 성능 손실이있을 것입니다.

다른 팁

Smarty라는 새로운 템플릿 라이브러리를 사용하고 싶을 수도 있습니다. Dwoo

방금 발견되었습니다 이것 매우 간단한 벤치 마크 - 그다지 중요하지는 않습니다.

다음은 다른 템플릿 솔루션 XSLT입니다. 여기에 내가 변환 한 페이지 중 하나에 대한 벤치 마크 (간단한 페이지)가 있습니다.

// with smarty (baseline)
    0.014 seconds

// with xsl/xslt-clientside
    0.008 seconds
    42% decrease in server stress

// with xsl/xslt-serverside
// this process would only be done if the users browser doesn't support client-side XSLT
    0.016 seconds
    14% increase in server stress

그것은 모든 사람을위한 것이 아니라 성능이 당신의 주요 관심사라면 :)

또한 클라이언트가 템플릿을 캐시 할 수 있습니다.

다음은 내가하고있는 일의 예입니다 (이것은 내 사이트 중 하나입니다) : http://pixao.com

그리고 다음은 대규모 사이트의 또 다른 예입니다. http://worldofwarcraft.com

지금까지 나는 아직 어떤 쇼 스토퍼에 도달하지 못했습니다.

여기에서 PHP 대 Smarty 및 더 많은 템플릿 엔진을 테스트하는 템플릿 엔진 벤치 마크 http://www.raintpl.com/php-template-engines-speed-test/

  • 할당 Twig의 경우 더 빠르고 HTML 템플릿을 클래스로 컴파일하므로 PHP가 포함 된 것보다 더 빠르게 실행하는 데 더 빠릅니다! IMHO는 무겁고 (많은 파일) 복잡하지만 매우 빠릅니다!

  • 더 빨리 반복하기 위해서는 PHP가 포함되며, 매우 쉽게 비가 내린 직후 (1 파일) 빠르고 빠릅니다.

Smarty는 처음 사용했을 때 모든 템플릿 파일에 대한 PHP 코드를 생성하고 올바르게 설정하고 가능한 경우 템플릿을 다시 구문 분석하는 대신 사용합니다.

나는 그것을 잠시 동안 사용했고 그것은 충분히 빠르지 만 결국에는 약간 제한적이기 때문에 일반 PHP 파일로 교체했습니다 (너무 많은 PHP4-ISM).

Smarty 자체는 다소 큰 라이브러리입니다 ... Smarty를 사용하려면 APC를 사용하여 컴파일 된 버전을 캐시하는 것이 좋습니다.

그것은 당신의 페이지의 흐름 때문에 smarty를 사용하는 방법에 따라 다릅니다. ~할 수 있다 변화

클래식 일반 PHP 흐름 :

  • 산출
  • $ _request 데이터를 처리합니다
  • 산출
  • 데이터베이스 쿼리를 처리합니다
  • 산출
  • $ _request 데이터를 처리합니다
  • 산출
  • ...

클래식 스마트 흐름 :

  • 모든 $ _request 데이터를 처리하십시오
  • 모든 데이터베이스 쿼리를 처리합니다
  • 모두 출력

이 페이지에서 일반 PHP가 1.0 초가 걸렸다면 Smarty 페이지는 1.0 초가 걸립니다. 그러나 모든 데이터베이스와 $ _request Handeling이 0.7 초가 걸린다고 가정하면. Plain PHP는 직접 출력을 시작하는 동안 Smarty 버전이 0.7 초 후에 출력을 시작합니다. 따라서 브라우저를 위해 스타일 시트와 이미지를 더 빨리 다운로드 할 수 있습니다. 출력이 없으면 "정지"버튼이 영향을 미치지 않음을 의미합니다.

그러나 Smarty에서는 템플릿 내에서 함수와 메소드를 호출 할 수 있습니다. 데이터가 필요한 위치로 느린 부분을 지연시킵니다.

거기 있습니다 템플릿 라이트 (Template Lite)라는 Smarty의 교체 하락 라이브러리 파일 크기와 관련하여 훨씬 가벼운 것입니다. 즉, 나는이 라이브러리에서 교환 할 필요없이 매우 높은 하중 상황에서 원래 Smarty를 사용했습니다.

내 자신의 경험과 비공식적 인 벤치 마크를 바탕으로 Smarty는 그 자체로 큰 성능 감소를 일으키지 않습니다. 그러나 맞춤형 플러그인을 작성하면 내리막 길이로 들어갑니다.

Smarty Template는 PHP로 컴파일 및 캐시되지만 사용자 정의 플러그인은 항상 런타임에로드 및 실행되며 일반 기존 PHP 파일에서 동일한 코드를 실행하는 것보다 항상 느립니다. 사용자 정의 문자열 형식 플러그인으로는 이것을 너무 많이 알지 못하지만 플러그인에서 데이터베이스 쿼리를 수행 할 때 확실히 볼 수 있습니다.

전반적으로 Smarty를 강력히 추천합니다. PHP에서 디스플레이를 꺼내면 코드가 훨씬 더 읽기 쉽고 유지 관리 가능했습니다. 플러그인에 넣은 것에주의를 기울여야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top