FastCGI C++ vs. A Script Language (PHP/Python/Perl)

The Unknown picture The Unknown · Apr 30, 2009 · Viewed 16.2k times · Source

What are the ups and downs of using FastCGI C++ vs. PHP/Python/Perl to do the same job.

Any performance or design pitfalls or using one over the other? Even your opinions are welcome. (Tell me why one or the other rocks, or one or the other sucks).

Answer

stefs picture stefs · Apr 30, 2009

scripting languages may be slower than C, but is this a problem? almost never. and if the performance becomes a problem, you start to translate only the critical parts.

twitter/ruby is a good example; ruby is slow. some of the language features (that make ruby nice in the first place) just prevent different kinds of optimization (there is a great article by the jruby guy about this ... was it ola bini? can't remember).

still, twitter is powered by ruby, because ruby is fast enough. not long ago, "the blogs" reported twitter migrating to scala for performance reasons ... the truth was, only the messaging queue (and other parts of the backend) moved to scala. yahoo runs on a mixture of languages; php for the frontend, other, faster languages are used where performance is critical.

so, why is performance not that important? there are several reasons:

  • database bottleneck: not the scripting is slow, the database is
  • clientside bottleneck: rendering in the browser takes longer than the request. optimize the server side, and nobody will notice
  • horizontal scaling: often it's cheaper to add another server and thus triple the requests/sec than to optimize the app
  • developer time and maintenance are the most expensive parts of your project. you'll get more cheap python devs that maintain your app than web-enabled c-coders in less time
  • no compiling, short dev cycles

another pro-scripting point: many of the scripting languages support inlining or inclusion of fast (C) code:

  • python, inline c
  • php: extensions in c
  • server-side javascript via rhino: direct access to java/jvm (a good example for this is orf.at, one of the biggest websites in austria, powered by helma - serverside jvm-interpreted javascript!)

i think, especially in web developement the pros of high-level scripting far outweight the cons.