diff --git a/benchmark.rb b/benchmark.rb index cd385de..b8661cf 100644 --- a/benchmark.rb +++ b/benchmark.rb @@ -5,18 +5,74 @@ require 'rubygems' require 'active_support' require 'active_record' require 'action_controller' +require 'rails/version' $: << 'lib' require 'lib/validates_timeliness' + n = 10000 Benchmark.bm do |x| - x.report('timeliness') { + x.report('timeliness - datetime') { n.times do ActiveRecord::Base.timeliness_date_time_parse("2000-01-04 12:12:12", :datetime) end } + + x.report('timeliness - date') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("2000-01-04", :date) + end + } + x.report('timeliness - date as datetime') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("2000-01-04", :datetime) + end + } + + x.report('timeliness - time') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("12:01:02", :time) + end + } + + x.report('timeliness - invalid format datetime') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("20xx-01-04 12:12:12", :datetime) + end + } + + x.report('timeliness - invalid format date') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("20xx-01-04", :date) + end + } + + x.report('timeliness - invalid format time') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("12:xx:02", :time) + end + } + + + x.report('timeliness - invalid value datetime') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("2000-01-32 12:12:12", :datetime) + end + } + + x.report('timeliness - invalid value date') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("2000-01-32", :date) + end + } + + x.report('timeliness - invalid value time') { + n.times do + ActiveRecord::Base.timeliness_date_time_parse("12:61:02", :time) + end + } x.report('date/time') { n.times do "2000-01-04 12:12:12" =~ /\A(\d{4})-(\d{2})-(\d{2}) (\d{2})[\. :](\d{2})([\. :](\d{2}))?\Z/