2010-02-09 4 views
2

J'ai un problème lorsque je dois parcourir un graphe d'objet et sélectionner une valeur de propriété particulière. Ma solution d'origine met en cache une liste chaînée de noms de propriétés qui doivent être appliqués pour passer du point A au point B dans le graphe d'objets. J'utilise ensuite apache commons PropertyUtils pour parcourir la liste chaînée appelant getProperty (Object bean, String name) jusqu'à ce que j'aie atteint le point B.Performance PropertyUtils

Ma question est de savoir comment cela fonctionnera par rapport à peut-être cahier les objets de la méthode pour chaque étape . Que fait la propriétéUtils sous le capot? Fait-il beaucoup de réflexion/de levage?

+0

Je suggère de lire réellement le code PropertyUtils pour voir cela par vous-même :) –

Répondre

1

Vous n'avez pas besoin de transversaliser manuellement le graphique car les nouvelles versions de common beanutils prennent également en charge des expressions telles que bean1.prop1.prop2. À propos de la performance si vous exécutez seulement une fois que chaque expression les implémentations de propertyutils sont correctes, car un certain degré de réflexion est absolument nécessaire.

Vous pouvez effectuer une amélioration plus réelle des performances si chaque expression est appelée plusieurs fois. Ensuite, la mise en cache des méthodes finales à exécuter peut améliorer le résultat car vous ne faites qu'une seule fois la grande réflexion pour l'expression.

Si vous utilisez l'expression plusieurs fois, vous pouvez jeter un oeil à OGNL qui supporte les "expressions compilées".