aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/examples
diff options
context:
space:
mode:
authorAnkit Gupta <ankit.gupta8898@gmail.com>2013-07-05 16:20:54 +0100
committerAnkit Gupta-FIR <ankit_gupta-fir@external.mckinsey.com>2013-07-06 23:05:34 +0100
commita7ff577383dcf1b36d075b70713f614c598b2430 (patch)
treec62230a521272941a77c863324170c4036579ccc /activerecord/examples
parent56e3419fef2aff400867787b9fff06aededed9b2 (diff)
downloadrails-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/examples')
-rw-r--r--activerecord/examples/performance.rb14
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