首頁 >後端開發 >Golang >Go 的型別斷言和型別切換到底有多快?

Go 的型別斷言和型別切換到底有多快?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-09 07:30:12492瀏覽

How Fast Are Go's Type Assertions and Type Switches, Really?

Go 中的類型斷言和類型切換:對效能的影響

類型自省是檢查物件運行時類型的常用技術。然而,人們對其性能影響產生了擔憂。在本文中,我們探討了 Go 中類型斷言和類型切換的速度,並將它們與其他類型檢查方法進行比較。

類型發現效能

在 Go 中,輸入斷言和類型開關提供了一種在運行時識別物件類型的便捷方法。雖然眾所周知,這些機制可能會在 C/C 等語言中產生效能成本,但它們在 Go 中的影響還很有限。

基準評估

評估效能對於類型斷言和類型開關,我們建立了一個基準測試腳本(可在http://play.golang.org/p /E9H_4K2J9-)。此測試比較了四種方法:

  • Int 方法: 對已知類型的直接方法呼叫。
  • 介面: 透過介面。
  • 類型開關:類型開關來識別物件類型並呼叫適當的方法。
  • 型別斷言:型別斷言以擷取基礎型別並呼叫方法。

結果和分析

基準測試結果表明,所有四種方法都具有可比性速度:

  • 更新結果(2019 年10 月 9日):

    • Int 方法:1.67 ns/op
    • 介面:2.03 ns/op
    • 型別轉換:1.70 ns/op
    • 型態斷言:1.67 ns/op
  • 之前的結果( 1月19日, 2015):

    • 整數方法:2.71
    • 整數方法:2.71
    • 整數方法:2.71
  • 整數方法:2.71 /op

介面:2.98 ns/op型開關:16.7 ns/op

型態斷言:13.8 ns/op

結論結論 >與預期相反,與其他類型相比,Go中的類型斷言和類型切換對效能的影響最小檢查方法。這意味著開發人員可以使用這些技術,而不必擔心運行時成本。我們的基準測試表明,所有四種方法都具有相當的速度,使它們適合在性能關鍵型應用中使用。

以上是Go 的型別斷言和型別切換到底有多快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn