2009-11-19 5 views
0

(Plus précisément, org.codehaus.groovy.util.AbstractConcurrentMap)Dans quelles circonstances Groovy utilise-t-il AbstractConcurrentMap?

Tout en faisant un certain profil de nos thats applications Java mélangé/Groovy, je vois beaucoup de références à la classe AbstractConcurrentMap, dont aucun ne explicite dans la base de code. Est-ce que groovy utilise cette classe quand les cartes sont instanciées dans le style dynamique groovy def myMap = [:]? Existe-t-il des règles à propos du moment où groovy choisit d'utiliser cela par opposition à, disons, java.util.HashMap?

Et est-ce que quelqu'un a des informations de performance comparant les deux? Mon "contrôle du globe oculaire" dit que AbstractConcurrentMap semble être beaucoup plus lent - quelqu'un sait si j'ai raison?

Répondre

0

Déclenchement occasionnel: L'API javadoc pour Groovy semble mal aspirer (pas de description sur quoi et/ou pour quoi cette classe abstraite est). Mais d'après ce que je peux voir, il y a au moins 2 classes qui étendent cette classe abstraite. Les deux (comme vous pouvez le deviner à partir du nom du paquet) doivent faire quelque chose avec le code de réflexion dans Groovy. Donc j'imagine que Groovy instancie des implémentations de cette classe abstraite pour certaines choses internes (par exemple en tant que votre utilisation de cartes java/groovy)

Btw. la javadoc de la classe ClassInfo (qui entoure la ClassInfoSet) déclare laconiquement

Poignée pour toutes les informations que nous voulons garder sur la classe

Ce que je pense n'a de sens que pour l'auteur « Alex. Tkachman - »

0

Dans la version Groovy 1.6.3, ce qui suit:

println [:].getClass() 

pri nts

classe java.util.LinkedHashMap

qui indique qu'un LinkedHashMap est la mise en œuvre de la carte utilisée pour les cartes littérales.

Questions connexes