From: Trans Date: 2007-03-06T09:38:57+09:00 Subject: Re: Safe override of Class#new? On Mar 5, 3:39 pm, "Erik Veenstra" wrote: > > Like to get the opinions of other Ruby experts on this. What > > kind of potential trouble am I asking for by using this? > > (Not that I'm a Ruby expert, but anyway...) > > You'll run into a real slowdown of your application. AFAIK, > creating objects is one of the most expensive operations in any > OO language. Even when it's implemented in C, as is done with > Ruby. > > Yeah, sure, go ahead, implement it in Ruby and slow it down by > a factor of three!... :} > > (Just kidding...) > > gegroet, > Erik V. -http://www.erikveen.dds.nl/ > > ---------------------------------------------------------------- > > require "benchmark" > > class Class > alias :create :new > > def new_new(*a, &b) > obj = allocate > obj.send(:initialize, *a, &b) > obj > end > end > > times = 1_000_000 > > Benchmark.bmbm do |bm| > bm.report("old_new") do > times.times do > Object.new > end > end > > bm.report("new_new") do > times.times do > Object.new_new > end > end > end > > ---------------------------------------------------------------- > > > > user system total real > old_new 0.680000 0.010000 0.690000 ( 0.687622) > new_new 1.880000 0.010000 1.890000 ( 1.889214) > Ouch. Sigh, any way I seem to slice it, AOP in pure Ruby sucks. T.