Project

General

Profile

« Previous | Next » 

Revision 7c924013

Added by byroot (Jean Boussier) 9 days ago

[ruby/json] Micro-optimize rstring_cache_fetch

Closes: https://github.com/ruby/json/pull/888

  • Mark it as inline.
  • Use RSTRING_GETMEM, instead of RSTRING_LEN and RSTRING_PTR.
  • Use an inlinable version of memcmp.
== Parsing activitypub.json (58160 bytes) ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24] Comparison: before: 11766.6 i/s after: 12272.1 i/s - 1.04x faster == Parsing twitter.json (567916 bytes) ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24] Comparison: before: 1333.2 i/s after: 1422.0 i/s - 1.07x faster == Parsing citm_catalog.json (1727030 bytes) ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24] Comparison: before: 656.3 i/s after: 673.1 i/s - 1.03x faster == Parsing float parsing (2251051 bytes) ruby 3.4.6 (2025-09-16 revision https://github.com/ruby/json/commit/dbd83256b1) +YJIT +PRISM [arm64-darwin24] Comparison: before: 276.8 i/s after: 276.4 i/s - same-ish: difference falls within error 

https://github.com/ruby/json/commit/a67d1a1af4

Co-Authored-By: Scott Myron