here's a missive fired off by the site admin after he "benchmarked" two 
scripts, one written in php and one written in perl/cgi

> 
> First of all.
> 
> Dude. you're out of your mind.  Im serious. 
> 
> The WHOLE point about why PHP is faster than Perl is because the
> interpreter is compiled into Apache. 

he's not running a perl interpreter compiled into Apache.

> Also. the fact that your script caused MySQL to use up all of it's
> connections has -nothing- to do with PHP being compiled into Apache. 

I find this terribly difficult to believe, but I'm willing to post my 
cgi for review both here and in the DBI list

> We simply do -not- have the hardware to run mod_perl.   With our level of
> traffic, we would need a load balanced cluster to handle this.  
> 
> We skewed nothing.  We ran the same apache bench command for both
> scripts.  Same number of concurrent requests, same number of times. Do not
> confuse ApacheBench with some useless little tool. This is for serious
> server benchmarking.  The fact that we're using gemini table types and
> your database tables are indexed just further shows the limitations of
> Perl.
> 
> You simply don't get it.  PHP, in all of it's forms, blows perl out of the
> water.  I've been writing both since early 1993, and in every case, in
> every instance, PHP crushes perl for speed.  That's -why- it was created
> (build in interpreter).  That's -why- Zend released the PHP4 engine.  
> That's -why- we're running Zend Optimizer. If perl was the shit for doing
> CGI, why would anyone even bother creating things like PHP?  That's like
> the Chewbacca website.  It makes no sense.
> 
> mod_perl is a resource pig. I refuse to install something on a server that
> will make life miserable for everyone else. I've seen GHz machines hauled
> off of their foundations because of mod_perl, while the same server
> running PHP code has no problems whatsoever.

I responded with certain information along these lines: 

-=-
> > If you use CGI.pm in many of your mod_perl scripts, you may want to preload 
> > CGI.pm and its methods at server startup time. To do this,
> > add the following line to httpd.conf: 
> > 
> > PerlScript /home/httpd/conf/startup.pl
> > 
> > Create the file /home/httpd/conf/startup.pl and put in it all the modules 
> > you 
> > want to load. Include CGI.pm among them and call its
> > compile() method to precompile its autoloaded methods. 
> > 
> > #!/usr/local/bin/perl
> > 
> > use CGI ();
> > CGI->compile(':all');
> > 
> > Change the path to the startup script according to your preferences. 
> 
> if you're gonna benchmark at least do it right. 
> 
> don't flap statistics at my face when you've got sandbags tied around the 
> feet of all my peasants, and shot each one in the foot as well, please.
> 
> Also, Yoda's script is not performing (and from what I can see, can not 
> perform ) the same query mine was (again skewing the 'benchmark')
> 
> searching his script for 'c' does not return even the same list of maps mine 
> does. I feel that a certain degree of *accuracy* is also important in a 
> benchmark. 
> 
> I've also gone to the trouble of doing things such as this:
> 
>     my( $type, $id, $filename, $title, $size, $reviewfile, $rating, $rated, 
>     $oldtype );
>     $sth->bind_columns(\$type, \$id, \$filename, \$title, \$size, 
>     \$reviewfile, \$rating);
> 
> which binds the results of each return into the same variable reference to 
> save on memory and processing while looping through the fetch, instead of 
> thrashing the symbol table.
> 
> and other things like this
> 
> # die with status error if necessary if cgi itself got an error
>  if (!param() && cgi_error()) {
>     print header(-status=>cgi_error());
>     goto FINISH;# don't call ex

Reply via email to