Hi:
  
I was doing some simple timing tests with modruby
and found that it was slower than php. For the
10k file that I was using to test with, modruby
is 41.5% slower.

To test the timing, I used net/http to get the
page. Each time test was done 10 times and averaged.

Here is the first set of tests that I ran:

cat timetest.php
<?php
  header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
  header ("Pragma: no-cache");                          // HTTP/1.0

  include("10k.html");
?>

cat timetest.rhtml
<%
#require 'cgi'
print File.open("10k.html").read
%>

./http_speed.rb localhost /timetest.php
Avg: 0.1454315
Max: 0.160024
Min: 0.1396

./http_speed.rb localhost /timetest.rhtml
Avg: 0.1959076
Max: 0.204669
Min: 0.194422

After running these tests, I thought that the problem
may be in the way I was reading the file in ruby.
So, I made a another test that did not execute and
php or ruby code, but still had the 10k file.

head -5 10k.php
<html>
<body>
<% %>
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
123456789<br>
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
123456789<br>

head -5 10k.rhtml
<html>
<body>
<% %>
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
123456789<br>
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
123456789<br>

ls -alF 10k*
-rw-r--r--  1 jfreeze  jfreeze  10240 Oct  3 20:01 10k.html
-rw-r--r--  1 jfreeze  jfreeze  10240 Oct  5 09:19 10k.php
-rw-r--r--  1 jfreeze  jfreeze  10240 Oct  5 09:19 10k.rhtml

./http_speed.rb localhost /10k.php
Avg: 0.141425
Max: 0.148798
Min: 0.138738

./http_speed.rb localhost /10k.rhtml
Avg: 0.2008641
Max: 0.209457
Min: 0.199239


So, there it is. Modruby is doing nothing and is 41% slower 
than php for the test cases given.  Could this be a configuration issue?

Thanks

PS: If your interested in my timing code, here it is:

#!/usr/bin/env ruby

require 'net/http'
Net::HTTP.version_1_1   # declear to use 1.1 features.

def usage
  <<-EOT
Usage: Filename.basename($0) server path
  server    e.g.: www.xyz.com
  path      e.g.: /index.html
  EOT
end#usage

unless 2 == ARGV.size
  STDERR.puts usage
  exit
end

server = ARGV.shift
path = ARGV.shift
port = 80
simul = 10

def time_page(server, port, path)
  time_start = Time.now
  Net::HTTP.start( server, port ) { |http|
    response, body = http.get(path)
    #puts body
  }
  time = Time.now - time_start 
end

times = []
threads = []
simul.times { |i|
  threads << Thread.new(i) { times << time_page(server,port,path)}
  sleep .3 # don't overload the server
}
threads.each {|t| t.join }

sum = 0; times.each { |t| sum += t }
avg = sum / times.size
puts "Avg: #{avg}"
puts "Max: #{times.max}"
puts "Min: #{times.min}"

-- 
Jim Freeze
----------
Programming Ruby 
 def initialize; fun; end
A language with class