Skip to content

Commit 0bdf258

Browse files
committed
Make Time.at w/ in: another 1.2x faster
``` $ ips --ruby 'ruby-maybe --yjit' --ruby 'ruby-dev --yjit' -e 'Time.at(1_700_000_000, in: 0)' ruby 4.1.0dev (2026-07-15T17:09:20Z master 6cd755d) +YJIT +PRISM [arm64-darwin25] Time.at(1_700_000_000, in: 0): 8.944M i/s (± 0.7%, GC 3.2%) ruby 4.1.0dev (2026-07-15T17:09:20Z master 6cd755d) +YJIT +PRISM [arm64-darwin25] Time.at(1_700_000_000, in: 0): 10.925M i/s (± 0.9%, GC 4.0%) Summary ruby ruby-dev --yjit ran 1.22 ± 0.01 times faster than ruby ruby-maybe --yjit ``` utc_offset_arg checks whether its argument can be to_str'd, which Integer's (should) not be, so we can fast path it to speed it up
1 parent 1333623 commit 0bdf258

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

time.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2233,6 +2233,10 @@ invalid_utc_offset(VALUE zone)
22332233
static VALUE
22342234
utc_offset_arg(VALUE arg)
22352235
{
2236+
if (RB_INTEGER_TYPE_P(arg)) {
2237+
return arg;
2238+
}
2239+
22362240
VALUE tmp;
22372241
if (!NIL_P(tmp = rb_check_string_type(arg))) {
22382242
int n = 0;

0 commit comments

Comments
 (0)