From: ts Date: 2008-04-23T18:25:35+09:00 Subject: Re: Performance on method dispatch for methods defined via define_method Robert Dober wrote: > basically I mean that IS.compile("def a; 42 end") == > IS.compile("define_method :a do 42 end"). Well you can do it like me vgs% ./ruby -e 'puts VM::InstructionSequence.compile("def a() 12; end").disasm' == disasm: @>================================= 0000 putnil ( 1) 0001 definemethod :a, a, 0 0005 putnil 0006 leave == disasm: >========================================== 0000 putobject 12 ( 1) 0002 leave vgs% vgs% ./ruby -e 'puts VM::InstructionSequence.compile("define_method :a do 12; end").disasm' == disasm: @>================================= == catch table | catch type: break st: 0000 ed: 0009 sp: 0000 cont: 0009 |------------------------------------------------------------------------ 0000 putnil ( 1) 0001 putobject :a 0003 send :define_method, 1, block in , 8, 0009 leave == disasm: @>======================== == catch table | catch type: redo st: 0000 ed: 0002 sp: 0000 cont: 0000 | catch type: next st: 0000 ed: 0002 sp: 0000 cont: 0002 |------------------------------------------------------------------------ 0000 putobject 12 ( 1) 0002 leave vgs% You really think that it exist a big difference *at compile time* ? Guy Decoux