Heim > Backend-Entwicklung > Golang > Sind Gos Typzusicherungen und Typwechsel langsam?

Sind Gos Typzusicherungen und Typwechsel langsam?

Mary-Kate Olsen
Freigeben: 2024-12-09 09:22:08
Original
913 Leute haben es durchsucht

Are Go's Type Assertions and Type Switches Slow?

Typerkennungsleistung in Go: Sind Typzusicherungen/Typwechsel langsam?

In Go kann die Typerkennung zur Laufzeit durch Typ erreicht werden Zusicherungen oder Typschalter. Während die Typzusicherung eine direkte Umwandlung durchführt, vergleicht der Typwechsel mit Typinformationen. In C/C wird die Erkennung von Laufzeittypen häufig als langsam angesehen, was zur Verwendung von Typmitgliedsvergleichen als Problemumgehung führt.

Bewertung der Leistung mit Benchmarking

Zur Bewertung der Um die Leistung der Typerkennungsmechanismen in Go zu verbessern, führen wir einen Benchmark-Test durch: http://play.golang.org/p/E9H_4K2J9-. Der Test vergleicht vier Methoden:

  • BenchmarkIntmethod:Direktes Aufrufen einer Methode für einen bekannten Typ
  • BenchmarkInterface:Aufrufen einer Methode über einen Schnittstelle
  • BenchmarkTypeSwitch:Verwenden ein Typschalter zum Identifizieren und Aufrufen der Methode
  • BenchmarkTypeAssertion:Verwenden einer Typassertion zum Identifizieren und Aufrufen der Methode

Benchmark-Ergebnisse

Bearbeitet: 09. Oktober 2019

Neueste Ergebnisse mit Go v1.12.9 auf einem AMD R7 2700X zeigen, dass die vier Methoden in der Leistung ungefähr gleich sind:

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
Nach dem Login kopieren

Vorherige Ergebnisse: 19. Januar , 2015

Auf einem AMD64-Rechner wurden ältere Ergebnisse angezeigt dass Typwechsel und Typzusicherung langsamer waren als direkte Methodenaufrufe oder Schnittstellenmethodenaufrufe:

BenchmarkIntmethod  1000000000           2.71 ns/op
BenchmarkInterface  1000000000           2.98 ns/op
BenchmarkTypeSwitch 100000000           16.7 ns/op
BenchmarkTypeAssertion  100000000       13.8 ns/op
Nach dem Login kopieren

Schlussfolgerung

Basierend auf diesen Ergebnissen kann dieser Typ geschlossen werden Zusicherungen und Typwechsel in Go haben im Vergleich zu anderen Methoden zur Typprüfung keine nennenswerten Leistungseinbußen. Daher hängt die Auswahl des am besten geeigneten Ansatzes von Faktoren wie der Lesbarkeit des Codes und Wartungspräferenzen ab.

Das obige ist der detaillierte Inhalt vonSind Gos Typzusicherungen und Typwechsel langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage