@@ -46,10 +46,12 @@ Idioms
4646
4747- [ General] ( #general )
4848- [ Array] ( #array )
49+ - [ Date] ( #date )
4950- [ Enumerable] ( #enumerable )
5051- [ Hash] ( #hash )
5152- [ Proc & Block] ( #proc--block )
5253- [ String] ( #string )
54+ - [ Time] ( #time )
5355- [ Range] ( #range )
5456
5557### General
@@ -629,6 +631,27 @@ Comparison:
629631 inject block: 14063.1 i/s - 1.35x slower
630632```
631633
634+ ### Date
635+
636+ ##### ` Date.iso8601 ` vs ` Date.parse ` [ code] ( code/date/iso8601-vs-parse.rb )
637+
638+ When expecting well-formatted data from e.g. an API, ` iso8601 ` is faster and will raise an ` ArgumentError ` on malformed input.
639+
640+ ```
641+ $ ruby -v code/date/iso8601-vs-parse.rb
642+ ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17]
643+ Warming up --------------------------------------
644+ Date.iso8601 28.880k i/100ms
645+ Date.parse 15.805k i/100ms
646+ Calculating -------------------------------------
647+ Date.iso8601 328.035k (± 4.7%) i/s - 1.646M in 5.029287s
648+ Date.parse 175.546k (± 3.8%) i/s - 885.080k in 5.049444s
649+
650+ Comparison:
651+ Date.iso8601: 328035.3 i/s
652+ Date.parse: 175545.9 i/s - 1.87x slower
653+ ```
654+
632655### Hash
633656
634657##### ` Hash#[] ` vs ` Hash#fetch ` [ code] ( code/hash/bracket-vs-fetch.rb )
@@ -1193,6 +1216,26 @@ Comparison:
11931216 String#gsub/regex+/: 14668.1 i/s - 25.42x slower
11941217```
11951218
1219+ ### Time
1220+
1221+ ##### ` Time.iso8601 ` vs ` Time.parse ` [ code] ( code/time/iso8601-vs-parse.rb )
1222+
1223+ When expecting well-formatted data from e.g. an API, ` iso8601 ` is faster and will raise an ` ArgumentError ` on malformed input.
1224+
1225+ ```
1226+ $ ruby -v code/time/iso8601-vs-parse.rb
1227+ ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17]
1228+ Warming up --------------------------------------
1229+ Time.iso8601 10.234k i/100ms
1230+ Time.parse 4.228k i/100ms
1231+ Calculating -------------------------------------
1232+ Time.iso8601 114.485k (± 3.5%) i/s - 573.104k in 5.012008s
1233+ Time.parse 43.711k (± 4.1%) i/s - 219.856k in 5.038349s
1234+
1235+ Comparison:
1236+ Time.iso8601: 114485.1 i/s
1237+ Time.parse: 43710.9 i/s - 2.62x slower
1238+ ```
11961239
11971240### Range
11981241
0 commit comments