On Thu, Feb 2, 2012 at 23:03, botp <botpena / gmail.com> wrote:
>> (3..8).each do |x|
>> t=Time.now();for a in 0..10**x;end; puts("#{x} #{Time.now()-t}")
>> end
>
> 3 0.000142406
> 4 0.001344933
> 5 0.014539207
> 6 0.076141941
> 7 0.737979205
> 8 7.359555691
Ummmm... yeah... every time you tell it to do ten times as many loops,
it takes almost ten times as long. What's so surprising?
If you tweak the code to make it say how long each loop took, you'll
see that it actually gets FASTER at first, presumably due to assorted
constant overhead, then a tiny pinch slower (possibly due to the
switch to a different kind of number) but little enough that IMHO
that's lost in the noise.
puts("Pwr Tot Secs uS/Loop ")
(3..8).each do |x|
limit = 10**x
start_time = Time.now()
for a in 0 .. limit
# do nothing here, just timing how long the loops take
end
elapsed = Time.now() - start_time
puts(" #{x} #{elapsed} #{elapsed * 1000000.0 / limit} ")
end
will output, with a tiny bit of post-formatting:
Pwr Tot Secs uS/Loop
3 0.000292 0.292
4 0.001869 0.1869
5 0.014103 0.14103
6 0.1058 0.1058
7 1.051723 0.1051723
8 10.584073 0.10584073
Of course, as someone mentioned later, the runtime may matter; this is
MRI 1.9.3.
-Dave
--
Dave Aronson: Available Cleared Ruby on Rails Freelancer
(NoVa/DC/Remote) -- see www.DaveAronson.com, and blogs at
www.Codosaur.us, www.Dare2XL.com, www.RecruitingRants.com