>백엔드 개발 >Golang >Go의 유형 어설션과 유형 스위치는 얼마나 빠른가요?

Go의 유형 어설션과 유형 스위치는 얼마나 빠른가요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-09 07:30:12507검색

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):

    • Int 방법: 2.71 ns/op
    • 인터페이스: 2.98 ns/op
    • 유형 스위치: 16.7 ns/op
    • 유형 주장: 13.8 ns/op

결론

기대와는 달리 Go의 유형 어설션 및 유형 스위치는 다른 유형에 비해 성능에 최소한의 영향을 미칩니다. 확인 방법. 이는 개발자가 런타임 비용에 대한 큰 걱정 없이 이러한 기술을 사용할 수 있음을 의미합니다. 우리의 벤치마크 테스트에서는 네 가지 방법 모두 비슷한 속도를 보여 성능이 중요한 애플리케이션에 사용하기에 적합하다는 것을 보여줍니다.

위 내용은 Go의 유형 어설션과 유형 스위치는 얼마나 빠른가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.