From: Michael Fellinger Date: 2006-10-26T19:07:26+09:00 Subject: Re: Simple method overhead On Thursday 26 October 2006 18:31, vshepelev@imho.com.ua wrote: > Hi all. > > I have the method like: > class MyCoolClass > def initialize > @var = [] > end > > #some other methods push values to @var > > #here is method of interest: > def [](idx); @var[idx] end > end > > I have those, a bit confusing, profiling results: > > Total Self Children Calls Name > 0.09 0.05 0.04 66565 MyCoolClass#[] > 0.04 0.04 0.00 66565 Array#[] > > The strange thing is: method MyCoolClass#[] spends so much time inside > itself, though ALL it do - only call Array#[]. Is this normal? Maybe, > because of so huge calls count, but I can't understand this :( > > Thanks. > > V. methods have quite some overhead, so to say :) and this benchmark almost covers your values... so i'd say, yeah - it's simply the overhead # the code require 'benchmark' def one; end def two; one end def three; two end iterate = 66_565 Benchmark.bmbm(20) do |x| x.report("one :") { iterate.times{ one } } x.report("two :") { iterate.times{ two } } x.report("three:") { iterate.times{ three } } end =begin result user system total real one: 0.080000 0.020000 0.100000 ( 0.090971) two: 0.080000 0.060000 0.140000 ( 0.134608) three: 0.190000 0.040000 0.230000 ( 0.325138) =end