Hi everyone,

   I've been happily converting over a bunch of scripts to use mod_perl
   since we recently solved my Apache::SSI issues.

   My main reason for migrating to mod_perl from standard CGI scripts 
   is to improve performance on our Web server.  Many scripts take several
   seconds to run, but switching to mod_perl cuts the that time to tenths
   of a second.

   However, I've noticed that scripts that generate lot of output take
   substantially longer to run than their CGI counterparts.

   As an example, here's the timing on a CGI script (listed first) and
   the timing on a mod_perl aware script (listed second):

      [113]> time lynx -dump -mime-header 
http://www.hort.net/cgi-bin/gallery/photographer/lindsey > /dev/null
      0.010u 0.030s 0:01.59 2.5%      0+0k 0+0io 393pf+0w

      [114]> time lynx -dump -mime-header 
http://www.hort.net/perlssi/gallery/photographer/lindsey > /dev/null
      0.010u 0.000s 0:03.38 0.2%      0+0k 0+0io 393pf+0w

   The CGI script took 1.59 seconds to run, whereas the mod_perl version 
   took 3.38 seconds.  It generates about 321K of output.

   When the same script runs in another mode that generates less output,
   the mod_perl version is faster.  Again, CGI first, mod_perl second:

      [136]> time lynx -dump -mime-header 
http://www.hort.net/cgi-bin/gallery/photographer > /dev/null
      0.010u 0.010s 0:01.12 1.7%      0+0k 0+0io 436pf+0w

      [137]> time lynx -dump -mime-header 
http://www.hort.net/perlssi/gallery/photographer > /dev/null
      0.020u 0.000s 0:00.16 12.5%     0+0k 0+0io 431pf+0w

   This time the CGI script takes 1.12 seconds, but the mod_perl version is
   only .16 seconds.

   Why does this happen?  My handlers are set up like

      PerlSetVar Filter On
      PerlModule Apache::Filter Apache::RegistryFilter Apache::SSI
      PerlHandler Apache::RegistryFilter Apache::SSI

   I'm guessing that it's because Apache::Filter loads the output of
   each filter into memory before passing it on. 

   Can anyone confirm this?  Is there a way around it?

Thanks,

Chris

-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html

Reply via email to