Maison > développement back-end > Golang > Comment les assertions de type et les commutateurs de type de Go fonctionnent-ils par rapport aux autres méthodes de vérification de type ?

Comment les assertions de type et les commutateurs de type de Go fonctionnent-ils par rapport aux autres méthodes de vérification de type ?

DDD
Libérer: 2024-12-14 08:33:12
original
819 Les gens l'ont consulté

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

Assertions de type et commutateurs de type dans Go : considérations sur les performances

Dans Go, les assertions de type et les commutateurs de type fournissent des mécanismes de découverte de type à l'exécution. Cependant, des inquiétudes ont été soulevées quant à leurs performances par rapport à des méthodes telles que les comparaisons de membres de type en C/C.

Pour évaluer leur impact, un test de référence a été réalisé pour comparer la vitesse de ces méthodes :

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...
Copier après la connexion

Les résultats sur une machine AMD R7 2700X (Go v1.12.9) montrent que toutes les méthodes ont des performances similaires :

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
Copier après la connexion

Dans contrairement aux résultats précédents de 2015 sur une machine amd64, aucun ralentissement significatif n'est observé lors de l'utilisation de commutateurs ou d'assertions de type par rapport aux appels de méthode directs ou à l'accès à l'interface.

Dans l'ensemble, les performances des assertions de type et des commutateurs se sont considérablement améliorées. dans Go et est désormais comparable à d’autres méthodologies de vérification de type. Par conséquent, vous pouvez les utiliser dans votre code sans vous soucier de pénalités de performances substantielles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal