diff options
| author | Guo Xiang Tan <tgx_world@hotmail.com> | 2015-07-15 22:00:36 +0800 | 
|---|---|---|
| committer | Guo Xiang Tan <tgx_world@hotmail.com> | 2015-07-16 01:02:15 +0800 | 
| commit | beb07fbfae845d20323a9863c7216c6b63aff9c7 (patch) | |
| tree | ca37bca185b119ec2137632a38dd91aea107f249 /railties/lib/rails/mailers_controller.rb | |
| parent | 794252d70990162d14da17ee854ad353e74297ee (diff) | |
| download | rails-beb07fbfae845d20323a9863c7216c6b63aff9c7.tar.gz rails-beb07fbfae845d20323a9863c7216c6b63aff9c7.tar.bz2 rails-beb07fbfae845d20323a9863c7216c6b63aff9c7.zip | |
Revert "Revert "Reduce allocations when running AR callbacks.""
This reverts commit bdc1d329d4eea823d07cf010064bd19c07099ff3.
Before:
Calculating -------------------------------------
                        22.000  i/100ms
-------------------------------------------------
                        229.700  (± 0.4%) i/s -      1.166k
Total Allocated Object: 9939
After:
Calculating -------------------------------------
                        24.000  i/100ms
-------------------------------------------------
                        246.443  (± 0.8%) i/s -      1.248k
Total Allocated Object: 7939
```
begin
  require 'bundler/inline'
rescue LoadError => e
  $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler'
  raise e
end
gemfile(true) do
  source 'https://rubygems.org'
  # gem 'rails', github: 'rails/rails', ref: 'bdc1d329d4eea823d07cf010064bd19c07099ff3'
  gem 'rails', github: 'rails/rails', ref: 'd2876141d08341ec67cf6a11a073d1acfb920de7'
  gem 'arel', github: 'rails/arel'
  gem 'sqlite3'
  gem 'benchmark-ips'
end
require 'active_record'
require 'benchmark/ips'
ActiveRecord::Base.establish_connection('sqlite3::memory:')
ActiveRecord::Migration.verbose = false
ActiveRecord::Schema.define do
  create_table :users, force: true do |t|
    t.string :name, :email
    t.boolean :admin
    t.timestamps null: false
  end
end
class User < ActiveRecord::Base
  default_scope { where(admin: true) }
end
admin = true
1000.times do
  attributes = {
    name: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    email: "foobar@email.com",
    admin: admin
  }
  User.create!(attributes)
  admin = !admin
end
GC.disable
Benchmark.ips(5, 3) do |x|
  x.report { User.all.to_a }
end
key =
  if RUBY_VERSION < '2.2'
    :total_allocated_object
  else
    :total_allocated_objects
  end
before = GC.stat[key]
User.all.to_a
after = GC.stat[key]
puts "Total Allocated Object: #{after - before}"
```
Diffstat (limited to 'railties/lib/rails/mailers_controller.rb')
0 files changed, 0 insertions, 0 deletions
