💨
[Feature #20707] `Time#xmlschema` を Ruby 本体に移動させるチケット
[Feature #20707] Move Time#xmlschema
into core
-
Time#xmlschema
を Ruby 本体に移動させるチケット -
Time#xmlschema
は XSML の datetime として表現するための文字列に変換するメソッド- Time#iso8601 (Ruby 3.3 リファレンスマニュアル)
-
Time#iso8601
の alias でもある
- 現状だと
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
せずに利用できるようになりました
Discussion