PERF: only require the rss library if used
Before: Total allocated: 257909321 bytes (2514134 objects) Total retained: 39681579 bytes (343387 objects) allocated memory by gem ----------------------------------- 42875979 rss retained memory by gem ----------------------------------- 2080188 rss retained objects by gem ----------------------------------- 13052 rss After: Total allocated: 210562047 bytes (2252030 objects) Total retained: 37433816 bytes (328635 objects) ---- So, 2 less megabytes on boot and 13000 objects stuck in ruby heaps forever.
This commit is contained in:
parent
a03e7cee63
commit
c89b42c488
|
@ -165,7 +165,7 @@ GEM
|
|||
lru_redux (1.1.0)
|
||||
mail (2.6.6)
|
||||
mime-types (>= 1.16, < 4)
|
||||
memory_profiler (0.9.8)
|
||||
memory_profiler (0.9.10)
|
||||
message_bus (2.1.2)
|
||||
rack (>= 1.1.3)
|
||||
metaclass (0.0.4)
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
#
|
||||
require 'digest/sha1'
|
||||
require 'excon'
|
||||
require 'rss'
|
||||
require_dependency 'feed_item_accessor'
|
||||
require_dependency 'feed_element_installer'
|
||||
require_dependency 'final_destination'
|
||||
require_dependency 'post_creator'
|
||||
require_dependency 'post_revisor'
|
||||
|
@ -27,12 +24,23 @@ module Jobs
|
|||
end
|
||||
|
||||
def poll_feed
|
||||
ensure_rss_loaded
|
||||
# defer loading rss
|
||||
feed = Feed.new
|
||||
import_topics(feed.topics)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# rss lib is very expensive memory wise, no need to load it till it is needed
|
||||
def ensure_rss_loaded
|
||||
return if @@rss_loaded
|
||||
require 'rss'
|
||||
require_dependency 'feed_item_accessor'
|
||||
require_dependency 'feed_element_installer'
|
||||
@@rss_loaded
|
||||
end
|
||||
|
||||
def not_polled_recently?
|
||||
$redis.set(
|
||||
'feed-polled-recently',
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# simple script to measure memory at boot
|
||||
|
||||
if ENV['RAILS_ENV'] != "production"
|
||||
exec "RAILS_ENV=production ruby #{__FILE__}"
|
||||
end
|
||||
|
||||
require 'memory_profiler'
|
||||
|
||||
MemoryProfiler.report do
|
||||
require File.expand_path("../../config/environment", __FILE__)
|
||||
|
||||
Rails.application.routes.recognize_path('abc') rescue nil
|
||||
|
||||
# load up the yaml for the localization bits, in master process
|
||||
I18n.t(:posts)
|
||||
|
||||
# load up all models and schema
|
||||
(ActiveRecord::Base.connection.tables - %w[schema_migrations versions]).each do |table|
|
||||
table.classify.constantize.first rescue nil
|
||||
end
|
||||
end.pretty_print
|
Loading…
Reference in New Issue