Performances de découverte de types dans Go : les assertions de type/commutateurs de types sont-elles lentes ?
Dans Go, la découverte de types au moment de l'exécution peut être réalisée via le type assertions ou commutateurs de type. Alors que l'assertion de type effectue une conversion directe, le commutateur de type se compare aux informations de type. En C/C, la découverte de types d'exécution est souvent considérée comme lente, ce qui conduit à l'utilisation de comparaisons de membres de type comme solution de contournement.
Évaluation des performances avec l'analyse comparative
Pour évaluer les performances des mécanismes de découverte de types dans Go, nous effectuons un test de référence : http://play.golang.org/p/E9H_4K2J9-. Le test compare quatre méthodes :
Benchmark Résultats
Edit : 9 octobre 2019
Des résultats récents avec Go v1.12.9 sur un AMD R7 2700X démontrent que les quatre méthodes sont à peu près égales en performances :
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
Résultats précédents : 19 janvier 2015
Sur une machine amd64, des résultats plus anciens montraient que le changement de type et l'assertion de type étaient plus lents que les appels de méthode directs ou les invocations de méthodes d'interface :
BenchmarkIntmethod 1000000000 2.71 ns/op BenchmarkInterface 1000000000 2.98 ns/op BenchmarkTypeSwitch 100000000 16.7 ns/op BenchmarkTypeAssertion 100000000 13.8 ns/op
Conclusion
Sur la base de ces résultats, nous pouvons conclure que les assertions de type et les commutateurs de type dans Go n'entraînent pas de pénalité de performances significative. par rapport à d’autres méthodologies de vérification de type. Par conséquent, la sélection de l'approche la plus appropriée dépend de facteurs tels que la lisibilité du code et les préférences de maintenance.
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!