Diary

Diary?

学生の研究日記だったらしいです。多分。

開発日記。

オススメの本(頂いた本):

いちばんあたらしいの2015 5/20 17:3

_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} になったよ

Log

2002 01 02 03 04 05 06 07 08 09 10 11 12
2003 01 02 03 04 05 06 07 08 09 10 11 12
2004 01 02 03 04 05 06 07 08 09 10 11 12
2005 01 02 03 04 05 06 07 08 09 10 11 12
2006 01 02 03 04 05 06 07 08 09 10 11 12
2007 01 02 03 04 05 06 07 08 09 10 11 12
2008 01 02 03 04 05 06 07 08 09 10 11 12
2009 01 02 03 04 05 06 07 08 09 10 11 12
2010 01 02 03 04 05 06 07 08 09 10 11 12
2011 01 02 03 04 05 06 07 08 09 10 11 12
2012 01 02 03 04 05 06 07 08 09 10 11 12
2013 01 02 03 04 05 06 07 08 09 10 11 12
2014 01 02 03 04 05 06 07 08 09 10 11 12
2015 01 02 03 04 05 06 07 08 09 10 11 12

SASADA Koichi (ko1 at atdot dot net) / Skype ID: ko1_ssd


rss