Go 中的型別發現效能:型別斷言/型別切換慢嗎?
Go 中,運行時的類型發現可以透過型別來實現斷言或型別開關。當型別斷言執行直接轉換時,型別切換會與型別資訊進行比較。在 C/C 中,執行時間類型發現通常被認為很慢,導致使用類型成員比較作為解決方法。
透過基準測試評估效能
評估Go 中類型發現機制的效能,我們進行了基準測試:http://play.golang.org/p/ E9H_4K2J9-。此測試比較了四種方法:
BenchmarkInterface:透過介面
BenchmarkInterface:透過介面透過介面
BenchmarkTypeSwitch:使用類型開關來識別和調用方法
BenchmarkIntmethod-16 2000000000 1.67 ns/op BenchmarkInterface-16 1000000000 2.03 ns/op BenchmarkTypeSwitch-16 2000000000 1.70 ns/op BenchmarkTypeAssertion-16 2000000000 1.67 ns/op
BenchmarkTypeAssertion:使用類型斷言來識別和調用方法
基準結果BenchmarkIntmethod 1000000000 2.71 ns/op BenchmarkInterface 1000000000 2.98 ns/op BenchmarkTypeSwitch 100000000 16.7 ns/op BenchmarkTypeAssertion 100000000 13.8 ns/op
編輯:2019 年 10 月 9 日
Go v1.12.9 在 AMD RX上的最新結果表明,四種方法的性能大致相同:之前的結果:一月2015 年 1 月 19 日在 amd64機器上,較舊的結果顯示類型切換和類型斷言比直接方法呼叫或介面方法呼叫慢:結論根據這些結果,可以結論:類型斷言和類型與其他類型檢查方法相比,Go 中的開關不會造成顯著的效能損失。因此,選擇最合適的方法取決於程式碼可讀性和維護偏好等因素。以上是Go 的型別斷言和型別切換慢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!