💨

[Feature #20707] `Time#xmlschema` を Ruby 本体に移動させるチケット

2024/09/10に公開

[Feature #20707] Move Time#xmlschema into core

  • Time#xmlschema を Ruby 本体に移動させるチケット
  • Time#xmlschema は XSML の datetime として表現するための文字列に変換するメソッド
  • 現状だと Time#xmlschema は time deafult gem で定義されており Time#strftime に依存している
  • これを Time#strftime に依存せずに専用のコードに落とし込むことでパフォーマンスを向上させるのがこのチケットの目的
  • 実際に検証結果が以下の通りなんですが約5倍ほど早くなっているみたいですね
compare-ruby: ruby 3.4.0dev (2024-08-29T13:11:40Z master 6b08a50a62) +YJIT [arm64-darwin23]
built-ruby: ruby 3.4.0dev (2024-08-30T13:17:32Z native-xmlschema 34041ff71f) +YJIT [arm64-darwin23]
warming up......

|                        |compare-ruby|built-ruby|
|:-----------------------|-----------:|---------:|
|time._xmlschema         |      1.087M|    5.190M|
|                        |           -|     4.78x|
|utc_time._xmlschema     |      1.464M|    6.848M|
|                        |           -|     4.68x|
|time._xmlschema(6)      |    859.960k|    4.646M|
|                        |           -|     5.40x|
|utc_time._xmlschema(6)  |      1.080M|    5.917M|
|                        |           -|     5.48x|
|time._xmlschema(9)      |    893.909k|    4.668M|
|                        |           -|     5.22x|
|utc_time._xmlschema(9)  |      1.056M|    5.707M|
|                        |           -|     5.40x|
  • この対応はすでに開発版の Ruby 3.4 に取り込み済みです
  • あと細かいんですが Time#iso8601 って require "time" しないと使えなかったんですが今回の対応により本体に組み込まれたので require せずに利用できるようになりました
GitHubで編集を提案

Discussion