mirror of
https://github.com/discourse/discourse.git
synced 2025-03-21 16:15:32 +08:00
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 ````
This commit is contained in:
parent
414a36184b
commit
88249932a0
12
config/initializers/300-perf.rb
Normal file
12
config/initializers/300-perf.rb
Normal file
@ -0,0 +1,12 @@
|
||||
# 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
|
Loading…
x
Reference in New Issue
Block a user