Maison > développement back-end > Golang > Pourquoi la réflexion du Golang est-elle lente ?

Pourquoi la réflexion du Golang est-elle lente ?

angryTom
Libérer: 2020-03-17 11:50:20
original
3660 Les gens l'ont consulté

Pourquoi la réflexion du Golang est-elle lente ?

Pourquoi la réflexion de Golang est lente

La réflexion de Golang est très lente Ceci est lié à la conception de son API. En Java, nous utilisons généralement la réflexion de cette manière.

Field field = clazz.getField("hello"); 
field.get(obj1); 
field.get(obj2);
Copier après la connexion

Le type d'objet de réflexion obtenu est java.lang.reflect.Field. Il peut être réutilisé. Tant que différents obj sont transmis, le champ correspondant sur cet obj peut être obtenu.

Mais la réflexion de Golang n'est pas conçue comme ça : (Apprentissage recommandé : Tutoriel vidéo jquery)

type_ := reflect.TypeOf(obj) 
field, _ := type_.FieldByName("hello")
Copier après la connexion

L'objet champ extrait ici est de type réflexion.StructField, mais il n'y a aucun moyen d'obtenir la valeur sur l'objet correspondant. Si vous souhaitez obtenir une valeur, vous devez utiliser un autre ensemble de réflexion pour l'objet au lieu de type

type_ := reflect.ValueOf(obj) 
fieldValue := type_.FieldByName("hello")
Copier après la connexion

Le type fieldValue extrait ici est Reflect.Value, qui est une valeur spécifique, pas une valeur réutilisable Réflexion objet, chaque réflexion nécessite la structure malloc reflex.Value et implique également GC.

Résumé

Il y a deux raisons principales pour lesquelles la réflexion de Golang est lente

1 Cela implique l'allocation de mémoire et le GC ultérieur. ;

3. Il y a beaucoup d'énumérations dans l'implémentation de Reflect, c'est-à-dire des boucles for, telles que des types.

Pour plus de connaissances sur Golang, veuillez faire attention à la colonne Tutoriel Golang sur le site Web PHP chinois.

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!

Étiquettes associées:
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