Skip to content

Instantly share code, notes, and snippets.

@toolmantim
Created September 7, 2011 11:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toolmantim/1200301 to your computer and use it in GitHub Desktop.
Save toolmantim/1200301 to your computer and use it in GitHub Desktop.
TimeWithZone marshalling slow down
# re. commit
# https://github.com/rails/rails/commit/0d3615f04c79f6e90d8ab33fdfc920b8faac9cb8
#
# Example of the slowdown if you `require 'tzinfo'` every time Time.find_zone is called
#
# This became a big problem when unmarshal'ing TimeWithZone objects, in say a Rails action, from memcache. 500ms was added to every request.
#
# e.g. of the problem:
#
# ActiveSupport::TimeWithZone#marshal_load calls
# Time::find_zone calls
# ActiveSupport::TimeZone#[] calls
# ActiveSupport::TimeZone#lazy_zones_map calls
# ActiveSupport::TimeZone#require_tzinfo which is slow as all hell.
require 'active_support/time'
require 'ruby-prof'
r1 = RubyProf.profile do
10000.times do
::Time.find_zone("UTC")
end
end
RubyProf::GraphPrinter.new(r1).print(STDOUT)
# The fix
ActiveSupport::TimeZone.class_eval do
def self.require_tzinfo
require 'tzinfo' unless defined?(::TZInfo)
rescue LoadError
$stderr.puts "You don't have tzinfo installed in your application. Please add it to your Gemfile and run bundle install"
raise
end
end
r2 = RubyProf.profile do
10000.times do
::Time.find_zone("UTC")
end
end
RubyProf::GraphPrinter.new(r2).print(STDOUT)
Thread ID: 2151894860
Total Time: 0.643748
  %total   %self     total      self      wait     child            calls   Name
--------------------------------------------------------------------------------
 100.00%   0.00%      0.64      0.00      0.00      0.64                1     Global#[No method]
                      0.64      0.01      0.00      0.63              1/1     Integer#times
--------------------------------------------------------------------------------
                      0.64      0.01      0.00      0.63              1/1     Global#[No method]
 100.00%   2.09%      0.64      0.01      0.00      0.63                1     Integer#times
                      0.63      0.01      0.00      0.62      10000/10000     <Class::Time>#find_zone
--------------------------------------------------------------------------------
                      0.63      0.01      0.00      0.62      10000/10000     Integer#times
  97.91%   2.27%      0.63      0.01      0.00      0.62            10000     <Class::Time>#find_zone
                      0.62      0.05      0.00      0.57      10000/10000     <Class::Time>#find_zone!
--------------------------------------------------------------------------------
                      0.62      0.05      0.00      0.57      10000/10000     <Class::Time>#find_zone
  95.64%   7.64%      0.62      0.05      0.00      0.57            10000     <Class::Time>#find_zone!
                      0.53      0.03      0.00      0.50      10000/10000     <Class::ActiveSupport::TimeZone>#[]
                      0.02      0.01      0.00      0.01      10000/10002     Kernel#respond_to?
                      0.01      0.01      0.00      0.00      20000/20000     Kernel#is_a?
                      0.01      0.01      0.00      0.00      10000/10000     Kernel#nil?
--------------------------------------------------------------------------------
                      0.53      0.03      0.00      0.50      10000/10000     <Class::Time>#find_zone!
  82.46%   4.99%      0.53      0.03      0.00      0.50            10000     <Class::ActiveSupport::TimeZone>#[]
                      0.49      0.02      0.00      0.47      10000/10000     <Class::ActiveSupport::TimeZone>#lazy_zones_map
                      0.01      0.01      0.00      0.00      10000/10001     Module#===
                      0.00      0.00      0.00      0.00           1/2672     Hash#default
--------------------------------------------------------------------------------
                      0.49      0.02      0.00      0.47      10000/10000     <Class::ActiveSupport::TimeZone>#[]
  76.59%   3.26%      0.49      0.02      0.00      0.47            10000     <Class::ActiveSupport::TimeZone>#lazy_zones_map
                      0.47      0.02      0.00      0.46      10000/10001     <Class::ActiveSupport::TimeZone>#require_tzinfo
                      0.00      0.00      0.00      0.00              1/3     Class#new
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          1/10001     ActiveSupport::TimeZone#initialize
                      0.47      0.02      0.00      0.46      10000/10001     <Class::ActiveSupport::TimeZone>#lazy_zones_map
  73.34%   2.52%      0.47      0.02      0.00      0.46            10001     <Class::ActiveSupport::TimeZone>#require_tzinfo
                      0.46      0.03      0.00      0.43      10001/10026     Kernel#require
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00         25/10026     Kernel#gem_original_require
                      0.46      0.03      0.00      0.43      10001/10026     <Class::ActiveSupport::TimeZone>#require_tzinfo
  70.83%   4.77%      0.46      0.03      0.00      0.43            10026     Kernel#require
                      0.40      0.39      0.00      0.02      10027/10027     Kernel#gem_original_require
                      0.01      0.00      0.00      0.01              1/1     <Module::Gem>#try_activate
                      0.01      0.01      0.00      0.00      10026/10027     <Module::Gem>#unresolved_deps
                      0.01      0.01      0.00      0.00      10026/10027     Hash#empty?
                      0.00      0.00      0.00      0.00              1/1     Exception#message
                      0.00      0.00      0.00      0.00              1/1     String#end_with?
                      0.00      0.00      0.00      0.00          1/10001     Module#===
--------------------------------------------------------------------------------
                      0.40      0.39      0.00      0.02      10027/10027     Kernel#require
  61.59%  61.03%      0.40      0.39      0.00      0.02            10027     Kernel#gem_original_require
                      0.00      0.00      0.00      0.00        2669/2672     Hash#default
                      0.00      0.00      0.00      0.00            57/57     <Module::TZInfo::RubyCoreSupport>#rational_new!
                      0.00      0.00      0.00      0.00            17/17     Module#attr_reader
                      0.00      0.00      0.00      0.00            42/42     IO#set_encoding
                      0.00      0.00      0.00      0.00          144/161     Module#method_added
                      0.00      0.00      0.00      0.00              3/3     Module#include
                      0.00      0.00      0.00      0.00            33/34     BasicObject#singleton_method_added
                      0.00      0.00      0.00      0.00            21/21     Class#inherited
                      0.00      0.00      0.00      0.00              1/1     Module#module_function
                      0.00      0.00      0.00      0.00              1/3     Class#new
                      0.00      0.00      0.00      0.00              4/4     Module#protected
                      0.00      0.00      0.00      0.00              1/1     Array#include?
                      0.00      0.00      0.00      0.00          2/10002     Kernel#respond_to?
                      0.00      0.00      0.00      0.00              4/4     Module#private
                      0.00      0.00      0.00      0.00            1/125     <Class::File>#dirname
                      0.00      0.00      0.00      0.00              1/1     Exception#set_backtrace
                      0.00      0.00      0.00      0.00              1/1     Exception#exception
                      0.00      0.00      0.00      0.00              1/1     Exception#backtrace
                      0.00      0.00      0.00      0.00         25/10026     Kernel#require
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          2/10002     Kernel#gem_original_require
                      0.02      0.01      0.00      0.01      10000/10002     <Class::Time>#find_zone!
   2.86%   2.02%      0.02      0.01      0.00      0.01            10002     Kernel#respond_to?
                      0.01      0.01      0.00      0.00      10001/10001     Kernel#respond_to_missing?
--------------------------------------------------------------------------------
                      0.01      0.00      0.00      0.01              1/1     Kernel#require
   1.89%   0.00%      0.01      0.00      0.00      0.01                1     <Module::Gem>#try_activate
                      0.01      0.00      0.00      0.01              1/1     <Class::Gem::Specification>#find_by_path
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#activate
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            4/727     Enumerable#find_all
                      0.00      0.00      0.00      0.00          354/727     Gem::Specification#contains_requirable_file?
                      0.00      0.00      0.00      0.00          366/727     Array#each
                      0.00      0.00      0.00      0.00            1/727     Gem::Specification#activate_dependencies
                      0.00      0.00      0.00      0.00            1/727     Gem::Specification#conflicts
                      0.01      0.00      0.00      0.01            1/727     <Class::Gem::Specification>#each
   1.87%   0.74%      0.01      0.00      0.00      0.01              727     Array#each
                      0.01      0.00      0.00      0.01          354/354     Gem::Specification#contains_requirable_file?
                      0.00      0.00      0.00      0.00        1097/1097     <Class::File>#file?
                      0.00      0.00      0.00      0.00          366/366     <Module::Gem>#suffixes
                      0.00      0.00      0.00      0.00              4/5     Gem::Specification#runtime_dependencies
                      0.00      0.00      0.00      0.00              4/4     Enumerable#find_all
                      0.00      0.00      0.00      0.00              4/4     Array#empty?
                      0.00      0.00      0.00      0.00          366/727     Array#each
--------------------------------------------------------------------------------
                      0.01      0.00      0.00      0.01              1/1     <Module::Gem>#try_activate
   1.87%   0.00%      0.01      0.00      0.00      0.01                1     <Class::Gem::Specification>#find_by_path
                      0.01      0.00      0.00      0.01              1/1     Enumerable#find
--------------------------------------------------------------------------------
                      0.01      0.00      0.00      0.01              1/1     <Class::Gem::Specification>#find_by_path
   1.87%   0.00%      0.01      0.00      0.00      0.01                1     Enumerable#find
                      0.01      0.00      0.00      0.01              1/1     <Class::Gem::Specification>#each
--------------------------------------------------------------------------------
                      0.01      0.00      0.00      0.01              1/1     Enumerable#find
   1.87%   0.00%      0.01      0.00      0.00      0.01                1     <Class::Gem::Specification>#each
                      0.01      0.00      0.00      0.01            1/727     Array#each
                      0.00      0.00      0.00      0.00              1/1     <Class::Gem::Specification>#_all
                      0.00      0.00      0.00      0.00              1/1     Kernel#block_given?
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      20000/20000     <Class::Time>#find_zone!
   1.83%   1.83%      0.01      0.01      0.00      0.00            20000     Kernel#is_a?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          1/10027     Gem::Specification#activate_dependencies
                      0.01      0.01      0.00      0.00      10026/10027     Kernel#require
   1.77%   1.77%      0.01      0.01      0.00      0.00            10027     <Module::Gem>#unresolved_deps
--------------------------------------------------------------------------------
                      0.01      0.00      0.00      0.01          354/354     Array#each
   1.76%   0.17%      0.01      0.00      0.00      0.01              354     Gem::Specification#contains_requirable_file?
                      0.00      0.00      0.00      0.00          354/355     Gem::Specification#full_gem_path
                      0.00      0.00      0.00      0.00          354/727     Array#each
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          1/10001     Kernel#require
                      0.01      0.01      0.00      0.00      10000/10001     <Class::ActiveSupport::TimeZone>#[]
   0.85%   0.85%      0.01      0.01      0.00      0.00            10001     Module#===
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      10000/10000     <Class::Time>#find_zone!
   0.84%   0.84%      0.01      0.01      0.00      0.00            10000     Kernel#nil?
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      10001/10001     Kernel#respond_to?
   0.84%   0.84%      0.01      0.01      0.00      0.00            10001     Kernel#respond_to_missing?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          1/10027     Gem::Specification#raise_if_conflicts
                      0.01      0.01      0.00      0.00      10026/10027     Kernel#require
   0.83%   0.83%      0.01      0.01      0.00      0.00            10027     Hash#empty?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00        1097/1097     Array#each
   0.56%   0.56%      0.00      0.00      0.00      0.00             1097     <Class::File>#file?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00           1/2672     Gem::Specification#activate
                      0.00      0.00      0.00      0.00           1/2672     Gem::Specification#raise_if_conflicts
                      0.00      0.00      0.00      0.00           1/2672     <Class::ActiveSupport::TimeZone>#[]
                      0.00      0.00      0.00      0.00        2669/2672     Kernel#gem_original_require
   0.41%   0.38%      0.00      0.00      0.00      0.00             2672     Hash#default
                      0.00      0.00      0.00      0.00              1/1     Proc#yield
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            1/355     Array#map
                      0.00      0.00      0.00      0.00          354/355     Gem::Specification#contains_requirable_file?
   0.33%   0.11%      0.00      0.00      0.00      0.00              355     Gem::Specification#full_gem_path
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#gems_dir
                      0.00      0.00      0.00      0.00            62/62     <Class::File>#directory?
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#full_name
                      0.00      0.00      0.00      0.00            62/62     <Class::File>#expand_path
                      0.00      0.00      0.00      0.00           62/125     <Class::File>#join
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#full_gem_path
   0.10%   0.03%      0.00      0.00      0.00      0.00               62     Gem::Specification#gems_dir
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#base_dir
                      0.00      0.00      0.00      0.00           62/125     <Class::File>#join
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            57/57     Kernel#gem_original_require
   0.07%   0.01%      0.00      0.00      0.00      0.00               57     <Module::TZInfo::RubyCoreSupport>#rational_new!
                      0.00      0.00      0.00      0.00            57/57     Kernel#Rational
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          366/366     Array#each
   0.07%   0.07%      0.00      0.00      0.00      0.00              366     <Module::Gem>#suffixes
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#gems_dir
   0.06%   0.03%      0.00      0.00      0.00      0.00               62     Gem::Specification#base_dir
                      0.00      0.00      0.00      0.00          124/125     <Class::File>#dirname
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            57/57     <Module::TZInfo::RubyCoreSupport>#rational_new!
   0.05%   0.01%      0.00      0.00      0.00      0.00               57     Kernel#Rational
                      0.00      0.00      0.00      0.00            57/57     <Class::Rational>#convert
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            57/57     Kernel#Rational
   0.04%   0.03%      0.00      0.00      0.00      0.00               57     <Class::Rational>#convert
                      0.00      0.00      0.00      0.00          114/114     Fixnum#div
                      0.00      0.00      0.00      0.00          114/114     Integer#integer?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#full_gem_path
   0.04%   0.04%      0.00      0.00      0.00      0.00               62     <Class::File>#directory?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#full_gem_path
   0.04%   0.03%      0.00      0.00      0.00      0.00               62     Gem::Specification#full_name
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#platform
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            1/125     Array#map
                      0.00      0.00      0.00      0.00           62/125     Gem::Specification#full_gem_path
                      0.00      0.00      0.00      0.00           62/125     Gem::Specification#gems_dir
   0.03%   0.03%      0.00      0.00      0.00      0.00              125     <Class::File>#join
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            1/125     Kernel#gem_original_require
                      0.00      0.00      0.00      0.00          124/125     Gem::Specification#base_dir
   0.03%   0.03%      0.00      0.00      0.00      0.00              125     <Class::File>#dirname
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Hash#default
   0.03%   0.00%      0.00      0.00      0.00      0.00                1     Proc#yield
                      0.00      0.00      0.00      0.00              1/1     <Class::ActiveSupport::TimeZone>#create
                      0.00      0.00      0.00      0.00              1/1     Hash#has_key?
                      0.00      0.00      0.00      0.00              1/2     Hash#[]=
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Proc#yield
   0.03%   0.00%      0.00      0.00      0.00      0.00                1     <Class::ActiveSupport::TimeZone>#create
                      0.00      0.00      0.00      0.00              1/1     ActiveSupport::TimeZone#initialize
                      0.00      0.00      0.00      0.00              1/3     <Class::BasicObject>#allocate
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Module::Gem>#try_activate
   0.02%   0.00%      0.00      0.00      0.00      0.00                1     Gem::Specification#activate
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#raise_if_conflicts
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#add_self_to_load_path
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#activate_dependencies
                      0.00      0.00      0.00      0.00              1/2     Hash#[]=
                      0.00      0.00      0.00      0.00           1/2672     Hash#default
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Class::ActiveSupport::TimeZone>#create
   0.02%   0.00%      0.00      0.00      0.00      0.00                1     ActiveSupport::TimeZone#initialize
                      0.00      0.00      0.00      0.00          1/10001     <Class::ActiveSupport::TimeZone>#require_tzinfo
                      0.00      0.00      0.00      0.00              1/1     <Class::ActiveSupport::TimeZone>#find_tzinfo
                      0.00      0.00      0.00      0.00              1/1     Kernel#class
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            17/17     Kernel#gem_original_require
   0.02%   0.02%      0.00      0.00      0.00      0.00               17     Module#attr_reader
                      0.00      0.00      0.00      0.00           17/161     Module#method_added
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00           17/161     Module#attr_reader
                      0.00      0.00      0.00      0.00          144/161     Kernel#gem_original_require
   0.02%   0.02%      0.00      0.00      0.00      0.00              161     Module#method_added
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#full_gem_path
   0.02%   0.02%      0.00      0.00      0.00      0.00               62     <Class::File>#expand_path
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            42/42     Kernel#gem_original_require
   0.02%   0.02%      0.00      0.00      0.00      0.00               42     IO#set_encoding
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#activate
   0.01%   0.00%      0.00      0.00      0.00      0.00                1     Gem::Specification#raise_if_conflicts
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#conflicts
                      0.00      0.00      0.00      0.00           1/2672     Hash#default
                      0.00      0.00      0.00      0.00          1/10027     Hash#empty?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          114/114     <Class::Rational>#convert
   0.01%   0.01%      0.00      0.00      0.00      0.00              114     Fixnum#div
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#raise_if_conflicts
   0.01%   0.00%      0.00      0.00      0.00      0.00                1     Gem::Specification#conflicts
                      0.00      0.00      0.00      0.00            1/727     Array#each
                      0.00      0.00      0.00      0.00              1/1     Hash#values
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            62/62     Gem::Specification#full_name
   0.01%   0.01%      0.00      0.00      0.00      0.00               62     Gem::Specification#platform
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00          114/114     <Class::Rational>#convert
   0.01%   0.01%      0.00      0.00      0.00      0.00              114     Integer#integer?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              3/3     Kernel#gem_original_require
   0.01%   0.00%      0.00      0.00      0.00      0.00                3     Module#include
                      0.00      0.00      0.00      0.00              3/3     Module#append_features
                      0.00      0.00      0.00      0.00              3/3     Module#included
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/3     Kernel#gem_original_require
                      0.00      0.00      0.00      0.00              1/3     <Class::TZInfo::Timezone>#new
                      0.00      0.00      0.00      0.00              1/3     <Class::ActiveSupport::TimeZone>#lazy_zones_map
   0.01%   0.00%      0.00      0.00      0.00      0.00                3     Class#new
                      0.00      0.00      0.00      0.00              1/1     Hash#initialize
                      0.00      0.00      0.00      0.00              1/1     Exception#initialize
                      0.00      0.00      0.00      0.00              2/3     <Class::BasicObject>#allocate
                      0.00      0.00      0.00      0.00              1/1     <Class::Hash>#allocate
                      0.00      0.00      0.00      0.00              1/1     BasicObject#initialize
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     ActiveSupport::TimeZone#initialize
   0.01%   0.00%      0.00      0.00      0.00      0.00                1     <Class::ActiveSupport::TimeZone>#find_tzinfo
                      0.00      0.00      0.00      0.00              1/1     <Class::TZInfo::TimezoneProxy>#new
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#activate
   0.01%   0.00%      0.00      0.00      0.00      0.00                1     Gem::Specification#add_self_to_load_path
                      0.00      0.00      0.00      0.00              1/1     <Module::Gem>#load_path_insert_index
                      0.00      0.00      0.00      0.00              1/1     Array#map
                      0.00      0.00      0.00      0.00              1/1     Array#insert
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Class::ActiveSupport::TimeZone>#find_tzinfo
   0.01%   0.00%      0.00      0.00      0.00      0.00                1     <Class::TZInfo::TimezoneProxy>#new
                      0.00      0.00      0.00      0.00              1/1     <Class::TZInfo::Timezone>#new
                      0.00      0.00      0.00      0.00              1/1     TZInfo::TimezoneProxy#setup
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              3/3     Module#include
   0.00%   0.00%      0.00      0.00      0.00      0.00                3     Module#append_features
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00             1/34     Module#module_function
                      0.00      0.00      0.00      0.00            33/34     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00               34     BasicObject#singleton_method_added
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00            21/21     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00               21     Class#inherited
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/5     Gem::Specification#activate_dependencies
                      0.00      0.00      0.00      0.00              4/5     Array#each
   0.00%   0.00%      0.00      0.00      0.00      0.00                5     Gem::Specification#runtime_dependencies
                      0.00      0.00      0.00      0.00              5/5     Gem::Specification#dependencies
                      0.00      0.00      0.00      0.00              5/5     Array#select
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#add_self_to_load_path
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     <Module::Gem>#load_path_insert_index
                      0.00      0.00      0.00      0.00              1/1     Array#index
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Class::TZInfo::TimezoneProxy>#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     <Class::TZInfo::Timezone>#new
                      0.00      0.00      0.00      0.00              1/3     Class#new
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#activate
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Gem::Specification#activate_dependencies
                      0.00      0.00      0.00      0.00              1/5     Gem::Specification#runtime_dependencies
                      0.00      0.00      0.00      0.00              1/1     Hash#delete
                      0.00      0.00      0.00      0.00            1/727     Array#each
                      0.00      0.00      0.00      0.00          1/10027     <Module::Gem>#unresolved_deps
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Module#module_function
                      0.00      0.00      0.00      0.00             1/34     BasicObject#singleton_method_added
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Module::Gem>#load_path_insert_index
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Array#index
                      0.00      0.00      0.00      0.00             7/14     String#==
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              4/4     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                4     Module#protected
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Array#include?
                      0.00      0.00      0.00      0.00             7/14     String#==
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00             7/14     Array#include?
                      0.00      0.00      0.00      0.00             7/14     Array#index
   0.00%   0.00%      0.00      0.00      0.00      0.00               14     String#==
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#add_self_to_load_path
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Array#map
                      0.00      0.00      0.00      0.00            1/125     <Class::File>#join
                      0.00      0.00      0.00      0.00            1/355     Gem::Specification#full_gem_path
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              5/5     Gem::Specification#runtime_dependencies
   0.00%   0.00%      0.00      0.00      0.00      0.00                5     Gem::Specification#dependencies
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              4/4     Array#each
   0.00%   0.00%      0.00      0.00      0.00      0.00                4     Enumerable#find_all
                      0.00      0.00      0.00      0.00            4/727     Array#each
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Class#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Hash#initialize
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Class#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Exception#initialize
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              3/3     Module#include
   0.00%   0.00%      0.00      0.00      0.00      0.00                3     Module#included
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Proc#yield
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Hash#has_key?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Class::TZInfo::TimezoneProxy>#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     TZInfo::TimezoneProxy#setup
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#conflicts
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Hash#values
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/2     Gem::Specification#activate
                      0.00      0.00      0.00      0.00              1/2     Proc#yield
   0.00%   0.00%      0.00      0.00      0.00      0.00                2     Hash#[]=
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/3     <Class::ActiveSupport::TimeZone>#create
                      0.00      0.00      0.00      0.00              2/3     Class#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                3     <Class::BasicObject>#allocate
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Exception#message
                      0.00      0.00      0.00      0.00              1/1     Exception#to_s
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              4/4     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                4     Module#private
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Class::Gem::Specification>#each
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     <Class::Gem::Specification>#_all
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              5/5     Gem::Specification#runtime_dependencies
   0.00%   0.00%      0.00      0.00      0.00      0.00                5     Array#select
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Class#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     <Class::Hash>#allocate
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Exception#message
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Exception#to_s
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#add_self_to_load_path
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Array#insert
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              4/4     Array#each
   0.00%   0.00%      0.00      0.00      0.00      0.00                4     Array#empty?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     String#end_with?
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Exception#exception
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Exception#set_backtrace
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     ActiveSupport::TimeZone#initialize
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Kernel#class
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Gem::Specification#activate_dependencies
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Hash#delete
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Class#new
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     BasicObject#initialize
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     Kernel#gem_original_require
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Exception#backtrace
--------------------------------------------------------------------------------
                      0.00      0.00      0.00      0.00              1/1     <Class::Gem::Specification>#each
   0.00%   0.00%      0.00      0.00      0.00      0.00                1     Kernel#block_given?
Thread ID: 2151894860
Total Time: 0.235685
  %total   %self     total      self      wait     child            calls   Name
--------------------------------------------------------------------------------
 100.00%   0.01%      0.24      0.00      0.00      0.24                1     Global#[No method]
                      0.24      0.02      0.00      0.22              1/1     Integer#times
--------------------------------------------------------------------------------
                      0.24      0.02      0.00      0.22              1/1     Global#[No method]
  99.99%   7.55%      0.24      0.02      0.00      0.22                1     Integer#times
                      0.22      0.02      0.00      0.20      10000/10000     <Class::Time>#find_zone
--------------------------------------------------------------------------------
                      0.22      0.02      0.00      0.20      10000/10000     Integer#times
  92.44%   8.01%      0.22      0.02      0.00      0.20            10000     <Class::Time>#find_zone
                      0.20      0.06      0.00      0.13      10000/10000     <Class::Time>#find_zone!
--------------------------------------------------------------------------------
                      0.20      0.06      0.00      0.13      10000/10000     <Class::Time>#find_zone
  84.43%  27.22%      0.20      0.06      0.00      0.13            10000     <Class::Time>#find_zone!
                      0.09      0.04      0.00      0.05      10000/10000     <Class::ActiveSupport::TimeZone>#[]
                      0.02      0.02      0.00      0.01      10000/10000     Kernel#respond_to?
                      0.01      0.01      0.00      0.00      20000/20000     Kernel#is_a?
                      0.01      0.01      0.00      0.00      10000/10000     Kernel#nil?
--------------------------------------------------------------------------------
                      0.09      0.04      0.00      0.05      10000/10000     <Class::Time>#find_zone!
  38.39%  17.60%      0.09      0.04      0.00      0.05            10000     <Class::ActiveSupport::TimeZone>#[]
                      0.04      0.03      0.00      0.02      10000/10000     <Class::ActiveSupport::TimeZone>#lazy_zones_map
                      0.01      0.01      0.00      0.00      10000/10000     Module#===
--------------------------------------------------------------------------------
                      0.04      0.03      0.00      0.02      10000/10000     <Class::ActiveSupport::TimeZone>#[]
  17.90%  11.20%      0.04      0.03      0.00      0.02            10000     <Class::ActiveSupport::TimeZone>#lazy_zones_map
                      0.02      0.02      0.00      0.00      10000/10000     <Class::ActiveSupport::TimeZone>#require_tzinfo
--------------------------------------------------------------------------------
                      0.02      0.02      0.00      0.01      10000/10000     <Class::Time>#find_zone!
   9.68%   6.79%      0.02      0.02      0.00      0.01            10000     Kernel#respond_to?
                      0.01      0.01      0.00      0.00      10000/10000     Kernel#respond_to_missing?
--------------------------------------------------------------------------------
                      0.02      0.02      0.00      0.00      10000/10000     <Class::ActiveSupport::TimeZone>#lazy_zones_map
   6.69%   6.69%      0.02      0.02      0.00      0.00            10000     <Class::ActiveSupport::TimeZone>#require_tzinfo
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      20000/20000     <Class::Time>#find_zone!
   6.30%   6.30%      0.01      0.01      0.00      0.00            20000     Kernel#is_a?
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      10000/10000     <Class::ActiveSupport::TimeZone>#[]
   2.89%   2.89%      0.01      0.01      0.00      0.00            10000     Module#===
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      10000/10000     Kernel#respond_to?
   2.88%   2.88%      0.01      0.01      0.00      0.00            10000     Kernel#respond_to_missing?
--------------------------------------------------------------------------------
                      0.01      0.01      0.00      0.00      10000/10000     <Class::Time>#find_zone!
   2.84%   2.84%      0.01      0.01      0.00      0.00            10000     Kernel#nil?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment