Skip to main content

Benchmarking Ruby 2.7.0's Numbered Parameters

·1 min

Ruby 2.7.0 added numbered block parameters. There was some controversy which resulted in the initial syntax of @n changing to _n. I like the change.

This is what it looks like:

# regular named params
HASH.map { |a, b| [a, b] }

# new numbered params
HASH.map { [_1, _2] }

Anyway, I wondered if there was any performance impact in this change so I threw together a quick benchmark. Result: it’s just as fast as named params.

Warming up --------------------------------------
        named params   143.381k i/100ms
     numbered params   142.011k i/100ms
Calculating -------------------------------------
        named params      2.027M (± 1.6%) i/s -     10.180M in   5.022400s
     numbered params      1.996M (± 2.4%) i/s -     10.083M in   5.053749s

Comparison:
        named params:  2027451.7 i/s
     numbered params:  1996273.3 i/s - same-ish: difference falls within error