On 21 Dec 2007, at 18:48, Frederick Cheung wrote:

>
> On 21 Dec 2007, at 18:18, Josh Susser wrote:
>
>>
>>
>> I'm the author of the new exists? code, and I also looked at doing it
>> with a lower-level connection call instead of a find with :select
>> option.  I don't have the data around anymore, but as I recall, the
>> benchmarks showed that using the select_all approach didn't perform  
>> as
>> well, so I went with the find with :select approach.  I hadn't  
>> thought
>> about the after_find callback interaction, and I guess no one else  
>> has
>> run into that problem before now either.  Some stuff has changed in  
>> AR
>> that might have affected performance of the select_all approach since
>> I tried it last, so it might be worth revisiting now.
>>
>
> Well I ended up with that code by taking apart find :first and  
> removing the instantiation of rows at the end, so I don't think it  
> should be a problem.
> What I posted should be doing exactly what find :first does, but  
> without the instantiation

I ran some numbers today:

ids = (1..10000).map { rand 2000000}

Benchmark.bmbm do |x|
   x.report("exists") { ids.each {|id|  Question.exists? id} }
end

Current trunk (find:first)

Rehearsal ------------------------------------------
exists   4.700000   0.620000   5.320000 (  6.437581)
--------------------------------- total: 5.320000sec

              user     system      total        real
exists   4.690000   0.620000   5.310000 (  6.574966)

select_all

Rehearsal ------------------------------------------
exists   4.650000   0.740000   5.390000 (  8.984423)
--------------------------------- total: 5.390000sec

              user     system      total        real
exists   4.010000   0.590000   4.600000 (  5.606526)


Not mind blowing and it's obviously not going to make a massive  
difference to anyone, but for me at least sets aside any performance  
worries.

Fred


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to