首頁  >  文章  >  後端開發  >  在切片上使用複製而不是附加總是更快嗎?

在切片上使用複製而不是附加總是更快嗎?

PHPz
PHPz轉載
2024-02-12 14:21:06472瀏覽

在切片上使用複製而不是附加總是更快嗎?

問題內容

當切片進行迭代增長時,很容易看出為什麼首先分配大小(如果已知)比使用追加函數更有效,因為後者將在每次迭代時決定是否增加大小切片容量。但我很想知道,當以非迭代方式連接兩個大切片時,使用附加的可變參數形式是否比使用 make/copy 構造效率低。例如(假設 sl1 和 sl2 的型別為 []int)

sl = append(sl, sl2...)

對比

nsl = make([]int, len(sl) + len(sl2))
i := copy(nsl, sl)
copy(nsl[i], sl2)
sl = nsl

我以為第一種形式(更具可讀性)仍然有效,因為我預計仍然只有一個容量變化(基於追加調用的參數數量)。我這樣想對嗎?

解決方法

appendcopy 使用相同的底層複製原語。

如果目標切片有足夠的容量,append將不會分配記憶體。

append 程式碼更容易閱讀。

以上是在切片上使用複製而不是附加總是更快嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除