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