diff options
author | Ankit Gupta <ankit.gupta8898@gmail.com> | 2013-07-05 16:20:54 +0100 |
---|---|---|
committer | Ankit Gupta-FIR <ankit_gupta-fir@external.mckinsey.com> | 2013-07-06 23:05:34 +0100 |
commit | a7ff577383dcf1b36d075b70713f614c598b2430 (patch) | |
tree | c62230a521272941a77c863324170c4036579ccc /activerecord | |
parent | 56e3419fef2aff400867787b9fff06aededed9b2 (diff) | |
download | rails-a7ff577383dcf1b36d075b70713f614c598b2430.tar.gz rails-a7ff577383dcf1b36d075b70713f614c598b2430.tar.bz2 rails-a7ff577383dcf1b36d075b70713f614c598b2430.zip |
Some performance benchmarking for take vs limit
Also added a dummy progress bar during insert of records so it shows something is happening.
Performance report
Model.take 6198.9 (±13.4%) i/s - 121743 in 20.042671s
Model.take! 6173.6 (±13.6%) i/s - 121242 in 20.057006s
Model.all limit(100) 107.8 (±15.8%) i/s - 2106 in 20.022316s
Model.all take(100) 105.2 (±15.2%) i/s - 2061 in 20.062509s
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/examples/performance.rb | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/activerecord/examples/performance.rb b/activerecord/examples/performance.rb index 35f13d2438..d3546ce948 100644 --- a/activerecord/examples/performance.rb +++ b/activerecord/examples/performance.rb @@ -43,6 +43,8 @@ class Exhibit < ActiveRecord::Base def self.feel(exhibits) exhibits.each { |e| e.feel } end end +def progress_bar(int); print "." if (int%100).zero? ; end + puts 'Generating data...' module ActiveRecord @@ -75,7 +77,7 @@ notes = ActiveRecord::Faker::LOREM.join ' ' today = Date.today puts "Inserting #{RECORDS} users and exhibits..." -RECORDS.times do +RECORDS.times do |record| user = User.create( created_at: today, name: ActiveRecord::Faker.name, @@ -88,7 +90,9 @@ RECORDS.times do user: user, notes: notes ) + progress_bar(record) end +puts "Done!\n" Benchmark.ips(TIME) do |x| ar_obj = Exhibit.find(1) @@ -117,10 +121,18 @@ Benchmark.ips(TIME) do |x| Exhibit.first.look end + x.report 'Model.take' do + Exhibit.take + end + x.report("Model.all limit(100)") do Exhibit.look Exhibit.limit(100) end + x.report("Model.all take(100)") do + Exhibit.look Exhibit.take(100) + end + x.report "Model.all limit(100) with relationship" do Exhibit.feel Exhibit.limit(100).includes(:user) end |