K.Sasada's Home Page

Diary - 2015 April

研究日記

卯月

_28(Tue)

現在、メソッド回りの再設計をやっているのですが、データを取りたいと思っております。

もしよろしければ、お手元の大きめのアプリを読み込んだあと、下記のコードを実行した結果を教えて頂けないでしょうか。

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}

こうなりました。

_sorah(Wed May 20 17:03:50 +0900 2015)

 めっちゃいまさらだけど、某 Rails アプリで config.eager_load = true にしたら → {:count=>79448, :ci_count=>358861, :methods=>71128, :methods_h=>3035129} になったよ

_19(Sun)

デモのために頑張って作りました。

arigatobook

何か感謝していって下さい。

_1(Wed)

いつの間にか、Salesforce.com / Heroku に転職して 3 年がたったようです。好きな仕事を適当にやらせてもらっていて、大変感謝しています。

今後ともよろしくお願いします。

Sasada Koichi / ko1 at atdot dot net
$Date: 2003/04/28 10:27:51 $