ruby/benchmark/time_xmlschema.yml
Nobuyoshi Nakada 7be1fafe58
Refactor Time#xmlschema
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|
2024-09-23 14:29:25 +09:00

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