Heim > Backend-Entwicklung > Golang > Wie funktionieren die Typzusicherungen und Typwechsel von Go im Vergleich zu anderen Typprüfungsmethoden?

Wie funktionieren die Typzusicherungen und Typwechsel von Go im Vergleich zu anderen Typprüfungsmethoden?

DDD
Freigeben: 2024-12-14 08:33:12
Original
818 Leute haben es durchsucht

How Do Go's Type Assertions and Type Switches Perform Compared to Other Type Checking Methods?

Typzusicherungen und Typwechsel in Go: Überlegungen zur Leistung

In Go stellen Typzusicherungen und Typwechsel Mechanismen zur Typerkennung zur Laufzeit bereit. Es wurden jedoch Bedenken hinsichtlich ihrer Leistung im Vergleich zu Methoden wie Typelementvergleichen in C/C geäußert.

Um ihre Auswirkungen zu bewerten, wurde ein Benchmark-Test durchgeführt, um die Geschwindigkeit dieser Methoden zu vergleichen:

package main

import (
    "testing"
)

type myint int64

type Inccer interface {
    inc()
}

func (i *myint) inc() {
    *i = *i + 1
}

func BenchmarkIntmethod(b *testing.B) {
    i := new(myint)
    incnIntmethod(i, b.N)
}

func BenchmarkInterface(b *testing.B) {
    i := new(myint)
    incnInterface(i, b.N)
}

func BenchmarkTypeSwitch(b *testing.B) {
    i := new(myint)
    incnSwitch(i, b.N)
}

func BenchmarkTypeAssertion(b *testing.B) {
    i := new(myint)
    incnAssertion(i, b.N)
}

// Remaining helper functions...
Nach dem Login kopieren

Die Ergebnisse auf einer AMD R7 2700X-Maschine (Go v1.12.9) zeigen, dass alle Methoden eine ähnliche Leistung haben:

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

In Im Gegensatz zu früheren Ergebnissen aus dem Jahr 2015 auf einer amd64-Maschine ist bei der Verwendung von Typschaltern oder Zusicherungen im Vergleich zu direkten Methodenaufrufen oder Schnittstellenzugriffen keine signifikante Verlangsamung zu beobachten.

Insgesamt hat sich die Leistung von Typzusicherungen und -schaltern deutlich verbessert in Go und ist jetzt mit anderen Typprüfungsmethoden vergleichbar. Daher können Sie sie in Ihrem Code verwenden, ohne erhebliche Leistungseinbußen befürchten zu müssen.

Das obige ist der detaillierte Inhalt vonWie funktionieren die Typzusicherungen und Typwechsel von Go im Vergleich zu anderen Typprüfungsmethoden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage