in reply to PHP is better than perl and what can i do to run perl faster?

As atcroft posited, I would also have to believe that the culprit is Perl being run as a CGI application rather than loaded as a module in the webserver. PHP isn't necessarily faster than Perl. There have been numerous comparisons on this subject, I would Google for Perl vs PHP or search on slashdot for language comparisons.

When Perl is *NOT* run as a webserver module, every page call requires that a new Perl interpreter is spawned. This quickly becomes very expensive, both in terms of memory and CPU utilization. When Perl is run as a webserver module, one instance of the interpreter is started with the webserver and multiple threads of execution are used. The big advantage of this is that each page/script is cached in memory (in theory forever, but memory constraints might not allow for this), the memory caching allows existing scripts to be run very quickly. The scripts never need be recompiled for every page view (as they might be with a CGI application).

Hope this helps.

jeremiah



If you make something idiot-proof, eventually someone will make a better idiot.
I am that better idiot.
  • Comment on Re: PHP is better than perl and what can i do to run perl faster?

Replies are listed 'Best First'.
Re^2: PHP is better than perl and what can i do to run perl faster?
by gmpassos (Priest) on Jun 14, 2004 at 07:23 UTC
    "When Perl is run as a webserver module, one instance of the interpreter is started with the webserver and multiple threads of execution are used"

    Correct me if I'm wrong but with mod_perl (Apache), we have one instance of the Perl interpreter for each thread/process of the WebServer, and not the apposite.

    We also doesn't have memory cache of "pages", unless this is implemented over a embeded html system, like HTML::Mason. What we have is that for each execution of a mod_perl module we are just continuing the execution of the module, so, is like to have a script that doesn't die and only need to be parsed and started 1 time, what is much more faster.

    Graciliano M. P.
    "Creativity is the expression of the liberty".

      "When Perl is run as a webserver module, one instance of the interpreter is started with the webserver and multiple threads of execution are used"

      Correct me if I'm wrong but with mod_perl (Apache), we have one instance of the Perl interpreter for each thread/process of the WebServer, and not the apposite.

      The key word is "started". While each mod_perl process has their own copy of the perl interpreter you only suffer the time expense of starting up perl and loading modules the one time. After that it's just cheap forks.