首頁 > 後端開發 > Golang > Go 的型別斷言和型別切換慢嗎?

Go 的型別斷言和型別切換慢嗎?

Mary-Kate Olsen
發布: 2024-12-09 09:22:08
原創
906 人瀏覽過

Are Go's Type Assertions and Type Switches Slow?

Go 中的型別發現效能:型別斷言/型別切換慢嗎?

Go 中,運行時的類型發現可以透過型別來實現斷言或型別開關。當型別斷言執行直接轉換時,型別切換會與型別資訊進行比較。在 C/C 中,執行時間類型發現通常被認為很慢,導致使用類型成員比較作為解決方法。

透過基準測試評估效能

評估Go 中類型發現機制的效能,我們進行了基準測試:http://play.golang.org/p/ E9H_4K2J9-。此測試比較了四種方法:

  • BenchmarkIntmethod:直接呼叫已知類型的方法
  • BenchmarkInterface:透過介面
  • BenchmarkInterface:透過介面
  • BenchmarkInterface:
  • 透過介面BenchmarkInterface:
  • 透過介面

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板