[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] CGIAlt 0.0.1 released - an alternative library of 'cgi.rb'

Makoto Kuwata

12/9/2007 4:27:00 PM

I have released CGIAlt 0.0.1.
http://rubyforge.org/projec...

CGIAlt is an alternative library of 'cgi.rb'.

* Compatible with 'cgi.rb' and CGI class
* Faster than 'cgi.rb'
* Available with CGIExt (which is an implementation of cgi.rb in C
extension)

The following is an example of benchmark.

cgi.rb CGIAlt CGIAlt
+CGIExt

--------------------------------------------------------------------------
require "cgi" (x1000) 13.16 7.89 ( 67%) 9.18
( 43%)
CGI#new (simple) (x100000) 20.34 14.53 ( 40%) 12.46
( 63%)
CGI#new (comple) (x100000) 26.62 20.10 ( 32%) 13.19
(102%)
CGI#header (simple) (x1000000) 12.68 6.05 (110%) 6.04
(110%)
CGI#header (complex) (x1000000) 43.52 36.26 ( 20%) 36.62
( 19%)


See http://cgiext.ruby... for details.

--
makoto kuwata

5 Answers

ara.t.howard

12/9/2007 7:16:00 PM

0


On Dec 9, 2007, at 9:29 AM, makoto kuwata wrote:

> I have released CGIAlt 0.0.1.
> http://rubyforge.org/projec...
>
> CGIAlt is an alternative library of 'cgi.rb'.
>
> * Compatible with 'cgi.rb' and CGI class
> * Faster than 'cgi.rb'
> * Available with CGIExt (which is an implementation of cgi.rb in C
> extension)
>
> The following is an example of benchmark.
>
> cgi.rb CGIAlt CGIAlt
> +CGIExt
>
> ----------------------------------------------------------------------
> ----
> require "cgi" (x1000) 13.16 7.89 ( 67%) 9.18
> ( 43%)
> CGI#new (simple) (x100000) 20.34 14.53 ( 40%) 12.46
> ( 63%)
> CGI#new (comple) (x100000) 26.62 20.10 ( 32%) 13.19
> (102%)
> CGI#header (simple) (x1000000) 12.68 6.05 (110%) 6.04
> (110%)
> CGI#header (complex) (x1000000) 43.52 36.26 ( 20%) 36.62
> ( 19%)
>
>
> See http://cgiext.ruby... for details.
>
> --
> makoto kuwata
>
>

any thoughts on why i'm not seeing any speedup with this:


#! /opt/local/bin/ruby
require 'rubygems'
require 'cgi'
require 'fcgi'
require 'cgiext'

start_time = Time::now

memory_session = Hash::new{|h,k| h[k] = {}}

FCGI::each_cgi do |cgi|
this_time = Time::now

# hack to get around ruby session bug
session = memory_session[[cgi.cookies
['_session_id']].compact.flatten.first]
last_time = session['last_time']
session['last_time'] = this_time

content = <<-html
<hr>
<b> START_TIME </b> @ <i>#{ start_time }</i>
<hr>
<b> THIS_TIME </b> @ <i>#{ this_time }</i>
<hr>
<b> LAST_TIME </b> @ <i>#{ last_time }</i>
<hr>
html

cgi.out { content }
end


??

cheers.



a @ http://codeforp...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama




Makoto Kuwata

12/11/2007 2:07:00 PM

0

Hi ara, thank you for trying CGIAlt and CGIExt.

I have released new version of CGIAlt (0.0.2).
It now supports FastCGI.
Could you try new one?

--
makoto kuwata


"ara.t.howard" <ara.t.how...@gmail.com> wrote:
> On Dec 9, 2007, at 9:29 AM, makoto kuwata wrote:
>
>
>
> > I have released CGIAlt 0.0.1.
> >http://rubyforge.org/projec...
>
> > CGIAlt is an alternative library of 'cgi.rb'.
>
> > * Compatible with 'cgi.rb' and CGI class
> > * Faster than 'cgi.rb'
> > * Available with CGIExt (which is an implementation of cgi.rb in C
> > extension)
>
> > The following is an example of benchmark.
>
> > cgi.rb CGIAlt CGIAlt
> > +CGIExt
>
> > ----------------------------------------------------------------------
> > ----
> > require "cgi" (x1000) 13.16 7.89 ( 67%) 9.18
> > ( 43%)
> > CGI#new (simple) (x100000) 20.34 14.53 ( 40%) 12.46
> > ( 63%)
> > CGI#new (comple) (x100000) 26.62 20.10 ( 32%) 13.19
> > (102%)
> > CGI#header (simple) (x1000000) 12.68 6.05 (110%) 6.04
> > (110%)
> > CGI#header (complex) (x1000000) 43.52 36.26 ( 20%) 36.62
> > ( 19%)
>
> > Seehttp://cgiext.rubyfor... details.
>
> > --
> > makoto kuwata
>
> any thoughts on why i'm not seeing any speedup with this:
>
> #! /opt/local/bin/ruby
> require 'rubygems'
> require 'cgi'
> require 'fcgi'
> require 'cgiext'
>
> start_time = Time::now
>
> memory_session = Hash::new{|h,k| h[k] = {}}
>
> FCGI::each_cgi do |cgi|
> this_time = Time::now
>
> # hack to get around ruby session bug
> session = memory_session[[cgi.cookies
> ['_session_id']].compact.flatten.first]
> last_time = session['last_time']
> session['last_time'] = this_time
>
> content = <<-html
> <hr>
> <b> START_TIME </b> @ <i>#{ start_time }</i>
> <hr>
> <b> THIS_TIME </b> @ <i>#{ this_time }</i>
> <hr>
> <b> LAST_TIME </b> @ <i>#{ last_time }</i>
> <hr>
> html
>
> cgi.out { content }
> end
>
> ??
>
> cheers.
>
> a @http://codeforp...
> --
> we can deny everything, except that we have the possibility of being
> better. simply reflect on that.
> h.h. the 14th dalai lama

ara.t.howard

12/11/2007 8:47:00 PM

0


On Dec 11, 2007, at 7:10 AM, makoto kuwata wrote:

> Hi ara, thank you for trying CGIAlt and CGIExt.
>
> I have released new version of CGIAlt (0.0.2).
> It now supports FastCGI.
> Could you try new one?

sure.

can you confirm that, for cgi i should do

require 'cgialt'
require 'cgiext'

and, for fcgi

require 'cgialt'
require 'cgialt/fcgi'
require 'cgiext'

and that, in both cases, i do not need to require either cgi.rb or
fcgi.{so,rb} ??

cheers.

a @ http://codeforp...
--
it is not enough to be compassionate. you must act.
h.h. the 14th dalai lama




ara.t.howard

12/11/2007 8:56:00 PM

0


On Dec 11, 2007, at 7:10 AM, makoto kuwata wrote:

> Hi ara, thank you for trying CGIAlt and CGIExt.
>
> I have released new version of CGIAlt (0.0.2).
> It now supports FastCGI.
> Could you try new one?


this is what i'm testing:

#! /opt/local/bin/ruby
require 'rubygems'
require 'cgialt'
require 'cgialt/fcgi'
require 'cgiext'

start_time = Time::now

memory_session = Hash::new{|h,k| h[k] = {}}

FCGI::each_cgi do |cgi|
this_time = Time::now

# hack to get around ruby session bug
session = memory_session[[cgi.cookies
['_session_id']].compact.flatten.first]
last_time = session['last_time']
session['last_time'] = this_time

content = <<-html
<hr>
<b> START_TIME </b> @ <i>#{ start_time }</i>
<hr>
<b> THIS_TIME </b> @ <i>#{ this_time }</i>
<hr>
<b> LAST_TIME </b> @ <i>#{ last_time }</i>
<hr>
html

cgi.out { content }
end




and i don't really see a huge improvement - but it's a very simply
program that may not take advantage of the performance features. can
you suggest a fcgi that should see a significant speedup?



a @ http://codeforp...
--
share your knowledge. it's a way to achieve immortality.
h.h. the 14th dalai lama



Makoto Kuwata

12/13/2007 8:45:00 AM

0

"ara.t.howard" <ara.t.how...@gmail.com> wrote:
> and i don't really see a huge improvement - but it's a very simply
> program that may not take advantage of the performance features. can
> you suggest a fcgi that should see a significant speedup?
>

CGIAlt and CGIExt are not the silver bullet for performance.
If CGI class and it's methods were bottle neck of your application,
CGIAlt and CGIExt would be good solution.
But if not, you can't find improvement of performance.


The following is an example of benchmarks. These benchmark scripts are
included in CGIAlt package and you can try them.


Table 1. summary of benchmark
cgi.rb CGIAlt CGIAlt
+CGIExt
---------------------------------------------------------------------------
require "cgi" (x1000) 13.16 7.89 ( 67%) 9.18
( 43%)
CGI#new (simple) (x100000) 20.34 14.53 ( 40%) 12.46
( 63%)
CGI#new (comple) (x100000) 26.62 20.10 ( 32%) 13.19
(102%)
CGI#header (simple) (x1000000) 12.68 6.05 (110%) 6.04
(110%)
CGI#header (complex) (x1000000) 43.52 36.26 ( 20%) 36.62
( 19%)


Table 2. result of bench.fcgi
Time taken for tests Request per
second
--------------------------------------------------------------------------
cgi + fcgi 16.686 [sec] 1198.61 [#/
sec]
cgialt + cgialt/fcgi 15.562 [sec] 1285.18 [#/
sec]
cgialt + cgialt/fcgi + cgiext 15.310 [sec] 1306.34 [#/
sec]



CGIExt replaces CGI.escapeHTML and ERB::Util.h and makes them much
faster.
If you use a lot of '<%=h var %>', CGIExt will improve your
application's performance.

--
makoto kuwata