1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #11336 from ankit8898/performance-bm

Some performance benchmarking for take vs limit
This commit is contained in:
Rafael Mendonça França 2013-07-06 16:01:43 -07:00
commit 8f25e08dda

View file

@ -43,6 +43,8 @@ class Exhibit < ActiveRecord::Base
def self.feel(exhibits) exhibits.each { |e| e.feel } end def self.feel(exhibits) exhibits.each { |e| e.feel } end
end end
def progress_bar(int); print "." if (int%100).zero? ; end
puts 'Generating data...' puts 'Generating data...'
module ActiveRecord module ActiveRecord
@ -75,7 +77,7 @@ notes = ActiveRecord::Faker::LOREM.join ' '
today = Date.today today = Date.today
puts "Inserting #{RECORDS} users and exhibits..." puts "Inserting #{RECORDS} users and exhibits..."
RECORDS.times do RECORDS.times do |record|
user = User.create( user = User.create(
created_at: today, created_at: today,
name: ActiveRecord::Faker.name, name: ActiveRecord::Faker.name,
@ -88,7 +90,9 @@ RECORDS.times do
user: user, user: user,
notes: notes notes: notes
) )
progress_bar(record)
end end
puts "Done!\n"
Benchmark.ips(TIME) do |x| Benchmark.ips(TIME) do |x|
ar_obj = Exhibit.find(1) ar_obj = Exhibit.find(1)
@ -117,10 +121,18 @@ Benchmark.ips(TIME) do |x|
Exhibit.first.look Exhibit.first.look
end end
x.report 'Model.take' do
Exhibit.take
end
x.report("Model.all limit(100)") do x.report("Model.all limit(100)") do
Exhibit.look Exhibit.limit(100) Exhibit.look Exhibit.limit(100)
end end
x.report("Model.all take(100)") do
Exhibit.look Exhibit.take(100)
end
x.report "Model.all limit(100) with relationship" do x.report "Model.all limit(100) with relationship" do
Exhibit.feel Exhibit.limit(100).includes(:user) Exhibit.feel Exhibit.limit(100).includes(:user)
end end