Nic Lin's Blog

喜歡在地上滾的工程師

在已知長度情況下優化 slice 的性能

golang 在用 slice 時要注意,如果先給大小的話可以避免動態的多次 allocate 多的 memory,然後讓底層產生多個 slice

假設從 SQL 拿出來的資料已經知道其長度,再塞資料到 slice 時如果用空的類似 []SomeRecord 效能上反而比較不好。

提升效能的作法應該是直接指定 slice 長度,例如

make([]SomeRecord, 0, len(sqlResults))

從參考文章的 benchmark 來看,空的 init 是最慢的,其餘不管是 append or direct access 的作法差異就不這麼大了

參考來源

comments powered by Disqus