discourse/config/initializers/300-perf.rb
Sam Saffron 88249932a0 PERF: remove SQL notifiers for every SQL execution
Benchmarking:

```
Benchmark.ips do |b|
  b.report("simple") do
    User.first
  end
end

ActiveSupport::Notifications.notifier.listeners_for("sql.active_record").clear

Benchmark.ips do |b|
  b.report("simple") do
    User.first
  end
end

```

```
sam@arch discourse % RAILS_ENV=production ruby script/micro_bench.rb

Before

Calculating -------------------------------------
              simple      3.289k (± 4.4%) i/s -     16.575k in   5.049771s
After

Calculating -------------------------------------
              simple      3.491k (± 3.6%) i/s -     17.442k in   5.002226s
````
2019-05-09 17:44:46 +10:00

13 lines
452 B
Ruby

# frozen_string_literal: true
if Rails.env == "production"
# This event happens quite a lot and fans out to ExplainSubscriber
# and Logger, this cuts out 2 method calls that every time we run SQL
#
# In production we do not care about Explain or Logging SQL statements
# at this level
#
# Micro bench shows for `User.first` this takes us from 3.3k/s to 3.5k/s
ActiveSupport::Notifications.notifier.unsubscribe("sql.active_record")
end