Iñaki Baz Castillo
9/11/2008 2:07:00 AM
El Jueves, 11 de Septiembre de 2008, botp escribi=F3:
> On Wed, Sep 10, 2008 at 7:24 PM, I=F1aki Baz Castillo <ibc@aliax.net> wro=
te:
> > So using "instance_eval" is ~ 40% slower than running directly the cod=
e.
>
> well, we can try again :)
>
> botp@jedi-hopeful:~$ cat test.rb
> require 'benchmark'
> n=3D100_000
> Benchmark.bmbm do |x|
> x.report("normal") { n.times { a=3Dnil;a=3D123; a2=3Da*2; a3=3Da*3 }}
> x.report("string") { n.times {instance_eval 'a=3Dnil;a=3D123; a2=3Da*2;=
a3=3Da*3'
> }} x.report("block") { n.times {instance_eval {a=3Dnil;a=3D123; a2=3Da*2;=
a3=3Da*3}
> }} x.report("block-broken") { n.times {a=3Dnil;instance_eval{a=3D123};
> instance_eval{ a2=3Da*2};
> instance_eval{a3=3Da*3}
> }
> }
> end
>
>
>
>
> botp@jedi-hopeful:~$ ruby test.rb
> Rehearsal ------------------------------------------------
> normal 0.140000 0.000000 0.140000 ( 0.247775)
> string 2.420000 0.010000 2.430000 ( 3.438391)
> block 0.250000 0.000000 0.250000 ( 0.375656)
> block-broken 0.470000 0.010000 0.480000 ( 0.698093)
> --------------------------------------- total: 3.300000sec
>
> user system total real
> normal 0.120000 0.000000 0.120000 ( 0.216789)
> string 2.480000 0.020000 2.500000 ( 3.291342)
> block 0.300000 0.000000 0.300000 ( 0.423327)
> block-broken 0.490000 0.000000 0.490000 ( 0.703046)
> botp@jedi-hopeful:~$
>
>
> slower but not slow (in my own mileage :)
> or optimistically, direct code is faster than a code block
Good comparision, thanks :)
=2D-=20
I=F1aki Baz Castillo