當切片進行迭代增長時,很容易看出為什麼首先分配大小(如果已知)比使用追加函數更有效,因為後者將在每次迭代時決定是否增加大小切片容量。但我很想知道,當以非迭代方式連接兩個大切片時,使用附加的可變參數形式是否比使用 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
我以為第一種形式(更具可讀性)仍然有效,因為我預計仍然只有一個容量變化(基於追加調用的參數數量)。我這樣想對嗎?
append
和 copy
使用相同的底層複製原語。
如果目標切片有足夠的容量,append
將不會分配記憶體。
append
程式碼更容易閱讀。
以上是在切片上使用複製而不是附加總是更快嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!