關於go中拷貝次數進而影響效能的問題
先來看這麼一個例子:
var aMap =map[int]int
aMap[1]=1
tmp:=aMap[1]
testMap1(tmp)
testMap2(aMap[1])
假設 testMap1 和 testMap2 的功能都是拿到引數之後列印一下引數值,那麼到在他們列印前,testMap1 完成這個動作進行了兩次拷貝,第一次拷貝是 tmp:=aMap[1],第二次拷貝是 tmp 到引數值。testMap2 只需要一次拷貝。那麼單從程式碼效能來看,肯定不應該用 tmp:=aMap[1] 這種方式去呼叫 testMap。
那麼我們再看 go1.9 中的 sync.Map,我需要獲取 map 中的 value 需要呼叫其 Load 方法,那麼這肯定會產生一次拷貝 即 tmp,_:=syncmap.Load(key),而如果不用 sync.Map,用普通 Map,就可以像上面那樣直接 map[key] 取出來用,這樣就少了一次拷貝。
不知道我這樣想的對不對,碰到 value 是那種很大的 struct,拷貝的開銷應該不小吧,有沒有什麼好的解決這個拷貝開銷的思路,如果用 sync.Map 的話
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 關於sun Solaris的遠端拷貝的問題
- Javascript 中的克隆(拷貝)問題JavaScript
- 關於javascript的深拷貝淺拷貝 思考JavaScript
- struct的拷貝問題Struct
- 關於引用物件拷貝物件
- go slice深拷貝和淺拷貝Go
- 關於js中的深淺拷貝和assign到底是深拷貝還是淺拷貝的爭論JS
- map物件拷貝問題物件
- 關於 mysql相關的jar影響了tomcat 的問題MySqlJARTomcat
- Java中的深淺拷貝問題,你清楚嗎?Java
- 關於兩次http請求,後一次請求影響前一次請求的問題HTTP
- C++---寫時拷貝解決深淺拷貝問題C++
- JavaScript中的淺拷貝與深拷貝JavaScript
- VUE 中 的深拷貝和淺拷貝Vue
- 兩次拷貝操作的故事
- 影響Java EE效能的十大問題Java
- 理解JS中的淺拷貝與深拷貝JS
- PHP中的淺拷貝和深拷貝薦PHP
- 淺談Java中的淺拷貝和深拷貝Java
- 關於 Puerts 的效能問題
- Java中關於十進位制數取反問題解決Java
- JavaScript中物件的拷貝JavaScript物件
- JS中的深拷貝JS
- 一行程式碼徹底終結關於物件/陣列的深拷貝問題行程物件陣列
- Oracle Lob型別相關引數以及效能影響Oracle型別
- JAVA 異常對於效能的影響Java
- 關於資料庫開啟大頁對效能的影響資料庫
- 關於 go-micro 相關問題Go
- 關於快取與資料查詢次數的問題快取
- js的深拷貝和淺拷貝JS
- 物件的深拷貝與淺拷貝物件
- js中的深淺拷貝JS
- JavaScript 中物件的深拷貝JavaScript物件
- 關於 js 物件 轉 字串 和 深拷貝 的 探討JS物件字串
- js關於物件直接量的拷貝簡單介紹JS物件
- C# 關於Try/Catch對系統效能影響的總結C#
- 在js中如何區分深拷貝與淺拷貝?JS
- 關於sap效能優化的問題優化