From: Josh Cheek Date: 2011-08-08T14:52:54+09:00 Subject: Re: Methods defined with module_eval are... faster? --90e6ba53a96ad47dc104a9f80ef9 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Sun, Aug 7, 2011 at 7:45 AM, I=F1aki Baz Castillo wrote: > Hi, just let me show this code: > > ------------------- > require "benchmark" > > > module M > self.module_eval(" > def self.kk(var) > if var =3D=3D 123 > a=3Dvar*2 > else > a=3Dvar*4 > end > end > ") > > def self.aa(var) > if var =3D=3D 123 > b=3Dvar*2 > else > b=3Dvar*4 > end > end > end > > > printf "M.kk: " > puts Benchmark.realtime { 4000000.times { M.kk(123) ; M.kk(4) } } > printf "M.aa: " > puts Benchmark.realtime { 4000000.times { M.aa(123) ; M.aa(4) } } > printf "M.kk: " > puts Benchmark.realtime { 4000000.times { M.kk(123) ; M.kk(4) } } > printf "M.aa: " > puts Benchmark.realtime { 4000000.times { M.aa(123) ; M.aa(4) } } > ------------------- > > > Results (ruby 1.9.2): > > M.kk: 1.4799699783325195 > M.aa: 1.6037561893463135 > M.kk: 1.4918322563171387 > M.aa: 1.612684965133667 > > > This is, M.kk (defined with module_eval) is faster than M.aa (which is > a commonly defined method). =BF?=BF? > > > -- > I=F1aki Baz Castillo > > > I got that aa was slightly quicker on 1.9.2p180 M.kk: 1.5347199440002441 M.aa: 1.506194829940796 M.kk: 1.527411937713623 M.aa: 1.4843168258666992 --90e6ba53a96ad47dc104a9f80ef9--