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
-~----------~----~----~----~------~----~------~--~---