range function in JavaScript
lodashを参考に,よく使うrange
をより早く実装してみました。
function range (n=0) {
const ret = new Array(n)
for (;n--;) ret[n] = n
return ret
}
いくつかのショートハンドもありますが、
keys()
を使うと90%近くも遅くなるらしいです。
また、nを大きくしたところ、map()
でも90%ほど遅くなりました。
range(Math.random() * 100 << 0) // Fastest 💪
keys(Math.random() * 100 << 0) // 93% slower 🐢
map(Math.random() * 100 << 0) // 60% slower 🐢
function keys (n=0) {
return [...Array(n).keys()]
}
function map(n=0) {
return [...Array(n)].map((_, i) => i)
}