關於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
相關文章
- Javascript 中的克隆(拷貝)問題JavaScript
- 關於js中的深淺拷貝和assign到底是深拷貝還是淺拷貝的爭論JS
- go slice深拷貝和淺拷貝Go
- 關於兩次http請求,後一次請求影響前一次請求的問題HTTP
- Java中的深淺拷貝問題,你清楚嗎?Java
- C++---寫時拷貝解決深淺拷貝問題C++
- 關於ES6深度拷貝
- VUE 中 的深拷貝和淺拷貝Vue
- JavaScript中的淺拷貝與深拷貝JavaScript
- 關於 Puerts 的效能問題
- 兩次拷貝操作的故事
- 理解JS中的淺拷貝與深拷貝JS
- 淺談Java中的淺拷貝和深拷貝Java
- TexStudio拷貝程式碼保留縮排的問題
- 一行程式碼徹底終結關於物件/陣列的深拷貝問題行程物件陣列
- 關於資料庫開啟大頁對效能的影響資料庫
- JavaScript中物件的拷貝JavaScript物件
- JS中的深拷貝JS
- 關於 go-micro 相關問題Go
- 關於 js 物件 轉 字串 和 深拷貝 的 探討JS物件字串
- 關於layui的彈窗:一閃而過的問題UI
- 淺拷貝&深拷貝
- js的深拷貝和淺拷貝JS
- 關於go的最熱門問題合集Go
- c/c++ 拷貝控制 建構函式的問題C++函式
- python 指標拷貝,淺拷貝和深拷貝Python指標
- js中的深淺拷貝JS
- Java教程:影響MySQL效能的配置引數JavaMySql
- 淺拷貝與深拷貝
- 淺拷貝和深拷貝
- 深拷貝和淺拷貝
- 淺拷貝與深拷貝的實現
- 對淺拷貝和深拷貝的理解
- 【JavaScript】物件的淺拷貝與深拷貝JavaScript物件
- 在js中如何區分深拷貝與淺拷貝?JS
- 深拷貝和淺拷貝 copy與strong修飾變數的區別變數
- JS中的深淺拷貝以及實現深拷貝的幾種方法.JS
- 關於OPcache對Swoole影響的理解opcache
- 低門檻徹底理解 JavaScript 中的深拷貝和淺拷貝JavaScript