Created
September 7, 2011 11:05
-
-
Save toolmantim/1200301 to your computer and use it in GitHub Desktop.
TimeWithZone marshalling slow down
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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