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

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

PHPz
發布: 2024-02-12 14:21:06
轉載
526 人瀏覽過

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

問題內容

當切片進行迭代增長時,很容易看出為什麼首先分配大小(如果已知)比使用追加函數更有效,因為後者將在每次迭代時決定是否增加大小切片容量。但我很想知道,當以非迭代方式連接兩個大切片時,使用附加的可變參數形式是否比使用 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板