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
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
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!

GoHandlesInterfacesAndTypeassertionSeffective, EnhancingCodeFlexibilityandrobustness.1) TypenSerionsallowruntimetypeCking, AsseenWithThapeInterfaceandCircletype.2) TypeSwitcheshandlemultipletypesiepy, nützlich, nützlich, nützlich

GO -Sprachfehlerhandhabung wird flexibler und durch Fehler lesbarer. IS und Fehler.as Funktionen. 1.Erors.IS wird verwendet, um zu prüfen, ob der Fehler dem angegebenen Fehler entspricht und für die Verarbeitung der Fehlerkette geeignet ist. 2.Errors.as können nicht nur den Fehlertyp überprüfen, sondern auch den Fehler in einen bestimmten Typ konvertieren, der zum Extrahieren von Fehlerinformationen geeignet ist. Die Verwendung dieser Funktionen kann die Fehlerbehandlungslogik der Fehlerbehandlung vereinfachen, aber auf die korrekte Abgabe von Fehlerketten achten und eine übermäßige Abhängigkeit vermeiden, um die Komplexität der Code zu verhindern.

TomakegoapplicationsRunfasterandmorefficenty, UseProfilingTools, LeveragEconcurrency und Managemoryeffectiv.1) UsePPRofforCpuandMemoryProfilingToidentifyBottlenecks.2) NutzungsgoroutinesandchannelstoparallelizeTakesAmproveProveperance.3) Implementierung

GO'SfutureIsBrightWithTrends aseimpultedTooling, Generika, Cloud-Nativadoption, PerformanceNHancements und Webassemblyintegration, ButchalenGesincludemaintainingImplication undImProventerrorhandling.

GoroutinesareFunctionsOrtheThatrunConcruncurentoingo, aktivieren, dass und leuchtet die Wutzehnung

ThepurpleTheinitfunctioningoinitializeVariables, Setupconfigurationen, orperformN -nötiger SetupBeforeThemaNFunctionexecutes

GointerfacesAremethodSignaturesSetShattypesMustImplement, EnablingPolymorphism mit der Outinheritanceforcleaner, modularCode.

Verwenden Sie die Funktion resocal (), um sich von Panik zu erholen. Die spezifischen Methoden sind: 1) Verwenden Sie Recover (), um Panik in der Aufschubfunktion zu erfassen, um Programmabstürze zu vermeiden. 2) detaillierte Fehlerinformationen zum Debuggen aufzeichnen; 3) entscheiden, ob die Programmausführung auf der Grundlage der spezifischen Situation wieder aufgenommen werden soll; 4) Verwenden Sie mit Vorsicht, um die Leistung zu vermeiden.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!
