views:

1367

answers:

9

Hey,

I am considering Smarty as my web app templating solution, and I am now concerned with its performance against plain PHP.

The Smarty site says it should be the same, however, I was not able to find anyone doing real benchmarking to prove the statement right or wrong.

Did anyone do some benchmarking of Smarty vs plain PHP? Or maybe come across some resources on such tests?

Thanks

+2  A: 

Just found this very simple benchmark - propably not very significant.

Endlessdeath
The domain is no longer online, but here's a good replacementhttp://cedric.emisfr.info/en/2010/03/25/smarty-2-6-3-0beta-and-dwoo-performances/
TravisO
+8  A: 

Because in the end, Smarty compiles and caches the templates files to native PHP-code, there is indeed no theoretical performance difference. Of course there will always be some performance loss due to the chunk of Smarty-code that needs to be interpreted every time.

Javache
+1  A: 

Smarty generates PHP code for all its template files when they're first used, provided you have it set up correctly, and uses them when possible instead of parsing the templates again.

I used it for a while and it was fast enough, but in the end I swapped it out for plain PHP files because it was a bit limiting (too many PHP4-isms).

Ant P.
+1  A: 

Smarty itself is rather a large library... If your going to use Smarty, I suggest you use APC to cache the compiled version.. It will offset the rather large size of the Smarty library...

DreamWerx
A: 

It depends on how you use Smarty because the flow of your pages can change

Classic plain PHP flow:

  • Output
  • Handle $_REQUEST data
  • Output
  • Handle database queries
  • Output
  • Handle $_REQUEST data
  • Output
  • ...

Classic Smarty flow:

  • Handle all $_REQUEST data
  • Handle all database queries
  • Output all

If plain PHP took 1.0 sec for this page the Smarty page also takes 1.0 sec. BUT if we assume that all database and $_request handeling takes 0.7 sec. The plain PHP starts output directly while the Smarty version starts outputing after 0.7 sec. Therefor the browser can start downloading stylesheets and images faster. No output also means the "Stop" button has no effect.

However in Smarty you can call functions and methods from within the template. Delaying the slow part to where the data is needed.

Bob Fanger
A: 

There is a drop in replacement for Smarty called Template Lite which is much more lightweight in respect to the library file size. That said, I have used the original Smarty in some extremely high load situations without needing to swap in this library.

DavidM
+4  A: 

You might also want to take at a new template library that is similar to Smarty called Dwoo

ejunker
A: 

Based on my own experiences and informal benchmarks, Smarty doesn't by itself cause any major performance reductions. However, when you get into writing custom plugins, things go downhill.

A Smarty template is compiled & cached as PHP, but a custom plugin is always loaded and executed at runtime and is always slower than running the same code in a plain old PHP file. You're not going to notice this too much with a custom string formatting plugin, but you'll definitely see it when doing database queries in a plugin.

Overall, I highly recommend Smarty. Getting the display out of the PHP has made our code so much more readable and maintainable. You just have to make sure you're careful about what you put in plugins.

abeger
+3  A: 

here's another templating solution XSLT here are my benchmarks for one of the pages i converted (its a simple page):

// 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

Its not for everyone but if performance is your main concern :)

On top of that you allow the client to cache your template.

here's an example of what I'm doing (this is one of my sites): http://pixao.com

and here's another example of it on a larger scale site: http://worldofwarcraft.com

so far i have yet to run into any show stoppers

Chad Scira