Project

General

Profile

Feature #18033

Updated by nobu (Nobuyoshi Nakada) almost 2 years ago

Make `Time.new` parse `Time#inspect` and ISO-8601 like strings. 

 * `Time.iso8601` and `Time.parse` need an extension library, `date`. 
 * `Time.iso8601` can't parse `Time#inspect` string. 
 * `Time.parse` often results in unintentional/surprising results. 
 * `Time.new` also about 1.9 times faster than `Time.iso8601`. 

     ``` 
     $ ./ruby -rtime -rbenchmark -e ' 
     n = 1000 
     s = Time.now.iso8601 
     Benchmark.bm(12) do |x| 
       x.report("Time.iso8601") {n.times{Time.iso8601(s)}} 
       x.report("Time.parse") {n.times{Time.parse(s)}} 
       x.report("Time.new") {n.times{Time.new(s)}} 
     end' 
                        user       system        total          real 
     Time.iso8601     0.006919     0.000185     0.007104 (    0.007091) 
     Time.parse       0.018338     0.000207     0.018545 (    0.018590) 
     Time.new         0.003671     0.000069     0.003740 (    0.003741) 
     ``` 

 https://github.com/ruby/ruby/pull/4825 
 https://github.com/ruby/ruby/pull/4639

Back