Title: Speed up immediate unpack when freeze: true by 10% by skipkayhil · Pull Request #396 · msgpack/msgpack-ruby · GitHub
Open Graph Title: Speed up immediate unpack when freeze: true by 10% by skipkayhil · Pull Request #396 · msgpack/msgpack-ruby
X Title: Speed up immediate unpack when freeze: true by 10% by skipkayhil · Pull Request #396 · msgpack/msgpack-ruby
Description: Rename object_complete_symbol -> frozen To use with other, non-symbol, pre-frozen objects. Speed up immediate unpack when freeze: true by 10% Since immediates are already frozen, we can skip over "maybe freeze" behavior completely for those types. ruby 4.0.2 (2026-03-17 revision d3da9fec82) +YJIT +PRISM [x86_64-linux] Warming up -------------------------------------- control 5.437k i/100ms frozen before 4.733k i/100ms Calculating ------------------------------------- control 54.830k (± 1.8%) i/s (18.24 μs/i) - 277.287k in 5.057252s frozen before 49.078k (± 1.9%) i/s (20.38 μs/i) - 246.116k in 5.014762s Comparison: frozen after: 55009.0 i/s control: 54829.6 i/s - same-ish: difference falls within error frozen before: 49078.3 i/s - 1.12x slower require 'msgpack' require 'benchmark/ips' data = [] 100.times do data << rand(0..127) data << -rand(0..30) data << nil data << true data << false data << rand(0..65535) end packed = MessagePack.pack(data) up_ctl = MessagePack::Unpacker.new(freeze: false) up_frz = MessagePack::Unpacker.new(freeze: true) Benchmark.ips do |x| x.report("control") { up_ctl.feed(packed); up_ctl.read } x.report("frozen #{ENV.fetch("STAGE", "after")}") { up_frz.feed(packed); up_frz.read } x.save!("/tmp/msgpack_un_freeze") x.compare! end
Open Graph Description: Rename object_complete_symbol -> frozen To use with other, non-symbol, pre-frozen objects. Speed up immediate unpack when freeze: true by 10% Since immediates are already frozen, we can skip ov...
X Description: Rename object_complete_symbol -> frozen To use with other, non-symbol, pre-frozen objects. Speed up immediate unpack when freeze: true by 10% Since immediates are already frozen, we can ski...
Opengraph URL: https://github.com/msgpack/msgpack-ruby/pull/396
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:8bd84980-7799-21c8-c459-93b3d3ecffd1 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | E80E:37A81A:23B5F20:30A1413:6A539CCF |
| html-safe-nonce | 031ea787e25ad1ae77f60f0b308098b1cac2143be98efbb23effaf048bca1919 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODBFOjM3QTgxQToyM0I1RjIwOjMwQTE0MTM6NkE1MzlDQ0YiLCJ2aXNpdG9yX2lkIjoiMzU2ODQ0Njg0Nzc4OTAxNDIyMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 52494c2477f277e9ae59e1536d69d0296c64cf78d87eb048f13d3568a71914a6 |
| hovercard-subject-tag | pull_request:3948494735 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/msgpack/msgpack-ruby/pull/396/files |
| twitter:image | https://avatars.githubusercontent.com/u/6014046?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/6014046?s=400&v=4 |
| og:image:alt | Rename object_complete_symbol -> frozen To use with other, non-symbol, pre-frozen objects. Speed up immediate unpack when freeze: true by 10% Since immediates are already frozen, we can skip ov... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/msgpack/msgpack-ruby git https://github.com/msgpack/msgpack-ruby.git |
| octolytics-dimension-user_id | 198264 |
| octolytics-dimension-user_login | msgpack |
| octolytics-dimension-repository_id | 2479813 |
| octolytics-dimension-repository_nwo | msgpack/msgpack-ruby |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 2479813 |
| octolytics-dimension-repository_network_root_nwo | msgpack/msgpack-ruby |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width