Go 性能優化技巧 7/10

接口的用途無需多言。但這並不意味着可在任何場合使用接口,要知道經過接口調用和普通調用存在很大差異。首先,相比靜態綁定,動態綁定性能要差不少;其次,運行期需額外開銷,好比接口會複製對象,哪怕僅是個指針,也會在堆上增長一個需 GC 處理的目標。性能

圖片描述
圖片描述
圖片描述

顯然,對於壓力很大的內部組件之間,用接口有些得不償失。測試

對比接口調用和普通調用的彙編指令,以便有個直觀的認識。spa

圖片描述

普通調用被內聯,但接口調用就沒有這個待遇了。指針

圖片描述

就算在 ifaceCall 內部,依然須要經過接口相關機制完成調用。對象

圖片描述

好了,有關接口的更多細節就不是本文須要闡述的了。總之,作任何選擇前,多作測試總歸是不壞的。接口

最新動態,請掃碼關注
圖片描述圖片

相關文章
相關標籤/搜索