JS拼接字串的效率

2021-09-12 19:58:57 字數 883 閱讀 7528

js拼接字串的方式,

1、最常見的是+=;

2、還可以先將字串轉化為陣列,然後呼叫join實現字串拼接

arr.push(str);

return arr.join("");

效率分為執行速度和記憶體消耗問題,網上查了相關資料,結論就是join在字串位元組很大時(百萬級以上),用join會明顯快於用+=實現的字串拼接(),用+=耗時大概時10秒,用join大概是幾百毫秒,當位元組數很少時,兩種方法耗時差距可以忽略,而且用join還需要開陣列變數,耗記憶體,所以這時候推薦用+=;

----------執行速度-------------

博主試著跑了下,十萬級別的位元組數,+=耗時幾乎為0,join耗時為7毫秒左右;百萬級別的位元組數,+=耗時在75毫秒上下波動,join耗時在68毫秒上下波動,兩者差距可以忽略;千萬級別的位元組,兩者耗時差距在200毫秒內波動,+=耗時在1000毫秒左右,join耗時在800毫秒左右波動;億級的位元組數,超過字元最大上限,報錯了。

故當位元組數低於百萬級別的時候,推薦用+=實現字串拼接,當位元組數為千萬級別的時候,如果對執行速度有要求,可以採取join實現拼接。如果對執行速度要求較高,百萬級別及以上的字串拼接推薦用join實現。

至於別的博文裡面為什麼百萬級的位元組數跑出來的效果,+=耗時10秒以上,可能是當時(5年前)的cpu效能較差造成的,現在cpu的效能已經足夠完成百萬級位元組數的拼接,所以博主跑出來的只有1秒,快了10倍。

------------字串記憶體------------

既然不同的拼接方式耗時不同,那麼這中間的過程肯定是不一樣的。

chrome在用+進行拼接時,生成的字串包含(),例如a+b,生成的是(a,b),再加c,生成的是((a,b),c),改用join生成的字串則是ab,可以節省大量記憶體(10倍以上的差距)

c 字串拼接效率

1 對於少量固定的字串拼接,如string s a b c 系統會優化成s string.concat a b c 不會新建多個字串。如果寫成string s a s b s c 則會建立三個新的字串。可見,它和stringbuilder有著相似的效率,比用 的拼接方式高效,並且 易於閱讀。stri...

再談「字串拼接」的效率

拼接字串,大體分為兩種方式,一種通過 號拼接 方式1 這種方式在ie6中效率是極其低下的,因此就出現了第二種方式 採用陣列儲存,最後通過join拼接,這種方式的效率在ie6下對比會發現速度差異非常大。此外還有很多朋友估計沒有注意過,陣列拼接的方式又分為兩種,一種是通過push將字串放入陣列 方式2 ...

再談「字串拼接」的效率

拼接字串,大體分為兩種方式,一種通過 號拼接 方式1 這種方式在ie6中效率是極其低下的,因此就出現了第二種方式 採用陣列儲存,最後通過join拼接,這種方式的效率在ie6下對比會發現速度差異非常大。此外還有很多朋友估計沒有注意過,陣列拼接的方式又分為兩種,一種是通過push將字串放入陣列 方式2 ...