stackprofを試しに使う
先日のRubyKaigi2014で紹介されたstackprofという解析ツールがあったので、試しに使ってみた。
設定は簡単で
gem install 'stackprof'
で入ります。Railsで使う場合はGemfileにセットしても良いかもしれません。
書いたらbundle installを実行。以上で設定は終わりです。
では実行してみましょ
bundle exec stackprof tmp/stackprof-cpu-*.dump
これやると以下のように表示されます。
================================== Mode: cpu(1000) Samples: 1319 (17.97% miss rate) GC: 151 (11.45%) ================================== TOTAL (pct) SAMPLES (pct) FRAME 222 (16.8%) 222 (16.8%) Pathname#chop_basename 128 (9.7%) 102 (7.7%) Hike::Index#entries 59 (4.5%) 59 (4.5%) block in BetterErrors::ExceptionExtension#set_backtrace 76 (5.8%) 57 (4.3%) ActiveSupport::FileUpdateChecker#watched 97 (7.4%) 45 (3.4%) block (2 levels) in BindingOfCaller::BindingExtensions#callers 41 (3.1%) 41 (3.1%) Sprockets::Mime#mime_types 38 (2.9%) 38 (2.9%) #<Module:0x00000101070218>.load_with_autoloading 26 (2.0%) 26 (2.0%) block in Hike::Index#entries 30 (2.3%) 26 (2.0%) Hike::Index#build_pattern_for 48 (3.6%) 24 (1.8%) Hike::Index#sort_matches 21 (1.6%) 21 (1.6%) block in Hike::Index#find_aliases_for 21 (1.6%) 20 (1.5%) block in ActiveRecord::Migrator.migrations 134 (10.2%) 20 (1.5%) Pathname#plus 19 (1.4%) 19 (1.4%) block in ActiveSupport::FileUpdateChecker#watched 24 (1.8%) 17 (1.3%) Sprockets::Asset#dependency_fresh? 55 (4.2%) 14 (1.1%) Sprockets::Cache::FileStore#[] 13 (1.0%) 13 (1.0%) block in ActionView::PathResolver#find_template_paths 13 (1.0%) 12 (0.9%) block in ActiveSupport::FileUpdateChecker#max_mtime 23 (1.7%) 10 (0.8%) ActionView::PathResolver#find_template_paths 10 (0.8%) 10 (0.8%) Sprockets::Server#etag 9 (0.7%) 9 (0.7%) block in Hike::Index#initialize 143 (10.8%) 9 (0.7%) Pathname#+ 110 (8.3%) 8 (0.6%) Pathname#relative? 8 (0.6%) 8 (0.6%) ActiveSupport::PerThreadRegistry#instance 10 (0.8%) 7 (0.5%) block in ActiveSupport::Dependencies::Loadable#require 260 (19.7%) 7 (0.5%) Pathname#join 6 (0.5%) 6 (0.5%) Hike::Trail#stat 6 (0.5%) 6 (0.5%) NewRelic::Agent::Agent.config 18 (1.4%) 5 (0.4%) Sprockets::AssetAttributes#logical_path 7 (0.5%) 5 (0.4%) Time.parse
うーん、なるほど