Rails, ik hou van je, maar...

Geplaatst door Michiel de Mare vr, 05 dec 2008 17:46:00 GMT

... er zijn grenzen.

require 'benchmark'
n = 100_000
Benchmark.bm do |x|
  x.report { n.times { 7.days.ago } }
  x.report { ago = 7.days ; n.times { Time.now - ago } }
  x.report { ago = 7.days.to_i ; n.times { Time.now - ago } }
  x.report { n.times { 7.days } }
  x.report { n.times { Time.now - 604800 } }
end

718.480000 195.710000 914.190000 (950.268875)
694.320000 192.130000 886.450000 (917.117917)
 24.570000   8.550000  33.120000 ( 33.580123)
 43.620000  12.120000  55.740000 ( 56.452434)
 24.860000   8.310000  33.170000 ( 34.039006)

Het verschil zit hem in allerlei tijdzoneberekeningen die de eerste versie uitvoert. Maar wat kunnen mij die schelen? 950 microseconden om uit te rekenen hoe laat het vorige week was, daar zou een Commodore 64 zich voor schamen!

Ter vergelijking, dit kost 34 microseconden in Ruby 1.8, 13 microseconden in JRuby, en 0.04 microseconden in Clojure

Recommend Michiel de Mare

Geplaatst in ,  | Tags  | geen reacties