Your proposal is almost certainly slower than the original, since it includes the cost of at least two function calls like the original *plus* block setup, another function call, creating an array, and two class constant lookups.

You should always be careful about performance assertions like this; over a million runs I get your version running to ~ 1.42 seconds, while the original `!!` approach runs to ~ 0.53 seconds.  That is to say, your "faster" version is approximately three times slower in practice. :)