Maison >développement back-end >Golang >À quelle vitesse les assertions de type et les commutateurs de type de Go sont-ils vraiment ?

À quelle vitesse les assertions de type et les commutateurs de type de Go sont-ils vraiment ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 07:30:12510parcourir

How Fast Are Go's Type Assertions and Type Switches, Really?

Assertions de type et commutateurs de type dans Go : impact sur les performances

L'introspection de type est une technique courante pour examiner le type d'exécution d'un objet. Cependant, des inquiétudes surgissent quant à ses implications en termes de performances. Dans cet article, nous explorons la vitesse des assertions de type et des commutateurs de type dans Go, en les comparant à d'autres méthodologies de vérification de type.

Performances de découverte de types

Dans Go, tapez Les assertions et les commutateurs de type constituent un moyen pratique d'identifier les types d'objets au moment de l'exécution. Bien que l'on sache que ces mécanismes peuvent entraîner des coûts de performances dans des langages comme C/C , leur impact dans Go est limité.

Évaluation de référence

Pour évaluer les performances d'assertions de type et de commutateurs de type, nous avons créé un script de test de référence (disponible sur http://play.golang.org/p/E9H_4K2J9-). Le test a comparé quatre méthodes :

  • Méthode Int : Appel de méthode direct sur un type connu.
  • Interface : Appel de méthode via un interface.
  • Type Switch : Tapez switch pour identifier le type d'objet et appeler le approprié méthode.
  • Assertion de type : Assertion de type pour récupérer le type sous-jacent et appeler la méthode.

Résultats et analyse

Les résultats du benchmark indiquent que les quatre méthodes ont des résultats comparables vitesse :

  • Résultats mis à jour (9 octobre 2019) :

    • Méthode Int : 1,67 ns/op
    • Interface : 2.03 ns/op
    • Type de commutateur : 1,70 ns/op
    • Assertion de type : 1,67 ns/op
  • Résultats précédents (19 janvier 2015) :

    • Méthode Int : 2,71 ns/op
    • Interface : 2,98 ns/op
    • Commutateur de type : 16,7 ns/op
    • Assertion de type : 13,8 ns/op

Conclusion

Contrairement aux attentes, les assertions de type et les commutateurs de type dans Go ont un impact minimal sur les performances par rapport aux autres types méthodes de vérification. Cela signifie que les développeurs peuvent utiliser ces techniques sans se soucier sérieusement des coûts d'exécution. Nos tests de référence démontrent que les quatre méthodes ont une vitesse comparable, ce qui les rend adaptées à une utilisation dans des applications critiques en termes de performances.

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!

Déclaration:
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