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