mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00

And refine uncommon date cases. # Iteration per second (i/s) | |compare-ruby|built-ruby| |:---------------------------|-----------:|---------:| |time.xmlschema | 5.020M| 14.192M| | | -| 2.83x| |utc_time.xmlschema | 6.454M| 15.331M| | | -| 2.38x| |time.xmlschema(6) | 4.216M| 10.043M| | | -| 2.38x| |utc_time.xmlschema(6) | 5.486M| 10.592M| | | -| 1.93x| |time.xmlschema(9) | 4.294M| 10.340M| | | -| 2.41x| |utc_time.xmlschema(9) | 4.784M| 10.909M| | | -| 2.28x| |fraction_sec.xmlschema(10) | 366.982k| 3.406M| | | -| 9.28x| |future_time.xmlschema | 994.595k| 15.853M| | | -| 15.94x|
27 lines
723 B
YAML
27 lines
723 B
YAML
prelude: |
|
|
# frozen_string_literal
|
|
unless Time.method_defined?(:xmlschema)
|
|
class Time
|
|
def xmlschema(fraction_digits=0)
|
|
fraction_digits = fraction_digits.to_i
|
|
s = strftime("%FT%T")
|
|
if fraction_digits > 0
|
|
s << strftime(".%#{fraction_digits}N")
|
|
end
|
|
s << (utc? ? 'Z' : strftime("%:z"))
|
|
end
|
|
end
|
|
end
|
|
time = Time.now
|
|
utc_time = Time.now.utc
|
|
fraction_sec = Time.at(123456789.quo(9999999999)).getlocal("+09:00")
|
|
future_time = Time.utc(10000)
|
|
benchmark:
|
|
- time.xmlschema
|
|
- utc_time.xmlschema
|
|
- time.xmlschema(6)
|
|
- utc_time.xmlschema(6)
|
|
- time.xmlschema(9)
|
|
- utc_time.xmlschema(9)
|
|
- fraction_sec.xmlschema(10)
|
|
- future_time.xmlschema
|