Go의 유형 검색 성능: 유형 어설션/유형 전환이 느린가요?
Go에서는 유형을 통해 런타임 시 유형 검색을 수행할 수 있습니다. 어설션 또는 유형 스위치. 유형 어설션이 직접 형변환을 수행하는 동안 유형 전환은 유형 정보와 비교합니다. C/C에서는 런타임 유형 검색이 느린 것으로 간주되어 해결 방법으로 유형 멤버 비교를 사용하는 경우가 많습니다.
벤치마킹으로 성능 평가
Go에서 유형 검색 메커니즘의 성능을 확인하기 위해 벤치마크 테스트를 수행합니다: http://play.golang.org/p/E9H_4K2J9-. 테스트에서는 네 가지 메서드를 비교합니다.
벤치마크 결과
편집: 2019년 10월 9일
AMD R7 2700X에서 Go v1.12.9를 사용한 최근 결과는 네 가지 방법의 성능이 대략 동일하다는 것을 보여줍니다. :
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
이전 결과: 2015년 1월 19일
amd64 시스템에서 이전 결과에 따르면 유형 전환 및 유형 어설션이 직접 메서드 호출이나 인터페이스 메서드 호출보다 느린 것으로 나타났습니다.
BenchmarkIntmethod 1000000000 2.71 ns/op BenchmarkInterface 1000000000 2.98 ns/op BenchmarkTypeSwitch 100000000 16.7 ns/op BenchmarkTypeAssertion 100000000 13.8 ns/op
결론
이러한 결과를 바탕으로 유형 주장과 Go의 유형 스위치는 다른 유형 검사 방법에 비해 성능이 크게 저하되지 않습니다. 따라서 가장 적절한 접근 방식을 선택하는 것은 코드 가독성 및 유지 관리 기본 설정과 같은 요소에 따라 달라집니다.
위 내용은 Go의 유형 어설션과 유형 스위치가 느린가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!