Производительность PropertyUtils - PullRequest
2 голосов
/ 09 февраля 2010

У меня есть проблема, когда мне нужно пройти через граф объектов и выбрать конкретное значение свойства. Мое оригинальное решение кэширует связанный список имен свойств, которые необходимо применить, чтобы попасть из точки A в точку B на графе объектов. Затем я использую Apache Commons PropertyUtils для перебора связанного списка, вызывающего getProperty (Object bean, String name), пока не достигну точки B.

Мой вопрос заключается в том, как это будет выполняться по сравнению с возможным кэшированием объектов метода для каждого шага. Что делает propertyUtils под капотом? Делает ли он много размышлений / тяжелой работы?

1 Ответ

1 голос
/ 09 февраля 2010

Вам не нужно вручную пересекать граф, потому что новые версии beanutils commons также поддерживают выражения типа bean1.prop1.prop2.

Что касается производительности, если вы выполняете только один раз каждое выражение, то реализации propertyutils хороши, потому что некоторая степень отражения абсолютно необходима.

Вы можете улучшить производительность, если каждое выражение вызывается несколько раз. Затем кэширование финальных методов для выполнения может улучшить результат, потому что вы делаете большое отражение только один раз для выражения.

Если вы используете выражение несколько раз, вы можете взглянуть на OGNL, который поддерживает "скомпилированные выражения".

...