aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/command/base_test.rb
diff options
context:
space:
mode:
authorGuo Xiang Tan <tgx_world@hotmail.com>2017-09-11 14:01:59 +0800
committerGuo Xiang Tan <tgx_world@hotmail.com>2017-09-11 14:01:59 +0800
commit32e1e70995a0c3f985dd2b5e9ce2295bc7b906ef (patch)
tree911d74c37962a413550693fdd1d6668ff0745817 /railties/test/command/base_test.rb
parentee79f0085b56e47ea69bd9f93cdb0a90da69568e (diff)
downloadrails-32e1e70995a0c3f985dd2b5e9ce2295bc7b906ef.tar.gz
rails-32e1e70995a0c3f985dd2b5e9ce2295bc7b906ef.tar.bz2
rails-32e1e70995a0c3f985dd2b5e9ce2295bc7b906ef.zip
PERF: Incorrect memoization in `ActiveRecord::Associations::Preloader::Association`.
``` require 'active_record' require 'benchmark/ips' ActiveRecord::Base.establish_connection(ENV.fetch('DATABASE_URL')) ActiveRecord::Migration.verbose = false ActiveRecord::Schema.define do create_table :users, force: true do |t| t.string :name, :email t.integer :topic_id t.timestamps null: false end create_table :topics, force: true do |t| t.string :title t.timestamps null: false end end attributes = { name: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', email: 'foobar@email.com' } class Topic < ActiveRecord::Base has_many :users end class User < ActiveRecord::Base belongs_to :topic end 100.times do User.create!(attributes) end users = User.first(50) 100.times do Topic.create!(title: 'This is a topic', users: users) end Benchmark.ips do |x| x.config(time: 10, warmup: 5) x.report("preload") do User.includes(:topic).all.to_a end end ``` ``` Calculating ------------------------------------- preload 25.000 i/100ms ------------------------------------------------- preload 251.772 (± 1.2%) i/s - 2.525k ``` ``` Calculating ------------------------------------- preload 26.000 i/100ms ------------------------------------------------- preload 270.392 (± 1.1%) i/s - 2.704k ```
Diffstat (limited to 'railties/test/command/base_test.rb')
0 files changed, 0 insertions, 0 deletions