有點基本的問題,在遍歷物件陣列時,我需要構建一個唯一字串串列,在回圈中添加 if 陳述句是否比創建集合更好?
if (!arr.includes(newString)) arr.push(newString)
VS 推送所有字串,然后
arr = [ ...new Set(arr) ]
uj5u.com熱心網友回復:
該Set是多少,多快。
讓我們在jsbench.me上做一個測驗
設定:
讓我們創建一個數字為 0-9999 的陣列,然后再次為 20,000 個專案創建一個 0-9999,每個專案都有一個重復項。
const data = []
for (let i = 0; i < 10000; i ) data.push(i)
for (let i = 0; i < 10000; i ) data.push(i)
回圈測驗:
let arr = []
for (let n of data) {
if (!arr.includes(n)) arr.push(n)
}
每秒 9.72 次執行
設定測驗:
let arr = [ ...new Set(data) ]
每秒 1422.54 次執行
在這里自己運行測驗
所以Set是快146倍(我的機器上)
我懷疑這是因為它Set是用本機編譯代碼實作的,如果做得好,它的性能和效率是無與倫比的。并且您可以相信內置函式的瀏覽器實作可能非常好。
此外,幾乎可以做的任何事情都可以避免大型陣列上的回圈,這對性能來說都是一件好事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/338985.html
下一篇:如何確定哪個處理器的性能最高
