現在、メソッド回りの再設計をやっているのですが、データを取りたいと思っております。
もしよろしければ、お手元の大きめのアプリを読み込んだあと、下記のコードを実行した結果を教えて頂けないでしょうか。
require 'pp' def ci_count iseq body = iseq.to_a.pop n = 0 body.each{|insn| next unless insn != Array if Hash === insn[1] n += 1 end } n end def iseq_stat stat = Hash.new(0) ObjectSpace.each_object(RubyVM::InstructionSequence){|iseq| stat[:count] += 1 stat[:ci_count] += ci_count(iseq) } ObjectSpace.each_object(Module){|m| stat[:methods] += m.instance_methods(false).size stat[:methods_h] += m.instance_methods(true).size } pp stat end iseq_stat
手元の arigatobook では、
=> {:count=>21175, :ci_count=>78952, :methods=>16093, :methods_h=>316813}
こうなりました。
いつの間にか、Salesforce.com / Heroku に転職して 3 年がたったようです。好きな仕事を適当にやらせてもらっていて、大変感謝しています。
今後ともよろしくお願いします。
めっちゃいまさらだけど、某 Rails アプリで config.eager_load = true にしたら → {:count=>79448, :ci_count=>358861, :methods=>71128, :methods_h=>3035129} になったよ