Increase speed creating new array

Hi all,
In some places new array creates as a Array(). If we replace it to a [], we increase performance about 1.7 times:

def old_slow



def new_fast



Benchmark.ips do |x|“new_fast”) { new_fast }“old_slow”) { old_slow }!


Calculating -------------------------------------

new_fast 184.920k i/100ms

old_slow 150.931k i/100ms

new_fast 7.528M (± 4.4%) i/s - 37.724M

old_slow 4.408M (± 4.3%) i/s - 22.036M


new_fast: 7528299.2 i/s

old_slow: 4408283.1 i/s - 1.71x slower

What do you think about it?


Be careful with this because the sematics of the two are not exactly equal:

[1] pry(main)> Array([123])

=> [123]

[2] pry(main)> [[123]]

=> [[123]]

and the desired sematics in the locations that you link to seem to be the Array() variant where the input might be a scalar or an array itself.

Thanks for your feedback.
Yes, I will need find places where args passes to Array() is not kind of Array class.