Ciaran,

My gut reaction is that you are seeing performance gains from the ActiveRecord 
query cache. In Rails, the query cache lifecycle is scoped to an action but I 
don't know how (or if) that maps to Sinatra and the way you're testing. 

AR will cache the query results and then just return those to you rather than 
run the query again. You can verify that the query cache isn't involved by 
calling:

  ActiveRecord::Base.connection.disable_query_cache!

in your Sinatra configuration. At least then you will have Sequel and AR on a 
level playing field since Sequel doesn't have a query cache (and my 
understanding is that it never will). I can't quite work out if this is even 
involved but better safe than sorry.

All of this doesn't really speak to the problem of 8.72 requests per second. I 
assume that you have two different setups to test AR vs Sequel, and if so, they 
are exactly the same except for the ORM code? Which leads me to think something 
is running more than it should (multiple queries) or the config is different.

I'm using Sequel in Sinatra under JRuby and couldn't be happier - I'd be 
interested in finding out what is going on, though, just to make sure I'm not 
doing the same thing. :-)

Don

On Nov 22, 2011, at 5:52 AM, Ciaran Archer wrote:

> Hi there
> 
> We've been evaluating the use of Sequel with SQL Server, and as poart
> of this we've been benchmarking Sequel against AR.
> 
> We're using JRuby, and Torquebox as our application server for all
> tests. We are using Sinatra as our web framework and Apache Bench to
> run the tests. A SQL Server 2008 R2 instance is being used for the
> tests.
> 
> Our benchmark test is very simple, return all rows in a table and
> print them to the standard output. The test table has 72 rows.
> 
> AR BENCHMARK RESULTS
> 
> Requests per second:    182.08 [#/sec] (mean)
> Time per request:       54.922 [ms] (mean)
> 
> SEQUEL BENCHMARK RESULTS
> 
> Requests per second:    8.72 [#/sec] (mean)
> Time per request:       1146.993 [ms] (mean)
> 
> I've extracted the relevant Sequel code, here: https://gist.github.com/1385695
> 
> I am trying to understand why Sequel seems to be doing so poorly and
> I'm hoping someone can tell me where I might be introducing an issue,
> or where I might be able to improve things.
> 
> Apologies in advance if the code is not super, I've only been using
> Ruby a few months :)
> 
> Cheers,
> Ciaran
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sequel-talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/sequel-talk?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to