2013-02-14 2 views
0

Имеет ли экземпляр VelocityEngine достаточно небольшой размер для создания нового экземпляра каждый раз, когда мне нужно обработать шаблон, или лучше всего кэшировать VelocityEngine и повторно использовать экземпляр?Кэш VelocityEngine?

ответ

1

Я думаю, что это обычно не будет иметь большого значения, поскольку проект, который я реализовал, сделал его настраиваемым, но в конце мы не кэшировали объект, а просто перегенерировали его каждый раз без каких-либо проблем с производительностью.

Обратите внимание, что в моем случае обработка скорости тяжелая, то есть сама рендеринг занимает значительное время. Для небольших полезных нагрузок это может быть другим. Но поскольку Velocity работает с отражением внутри, это всегда будет причиной некоторых накладных расходов для его рендеринга, и поэтому я ожидаю, что создание исходных объектов не займет много времени по сравнению с этим.

Поэтому я бы не потратил слишком много времени на то, чтобы реализовать что-то здесь, если анализ производительности не указывает на то, что он вызывает проблемы. Общее эмпирическое правило, измеряйте то, что используется большую часть времени, затем попытайтесь исправить это!

Кроме того, насколько я помню (не удалось найти ссылку только сейчас), VelocityEngine должен быть потокобезопасным для каждого определения. Но в прошлом были сообщения об ошибках в многопоточных проблемах (все исправлено сейчас!), И поэтому создание нового Engine позволяет избежать возможных проблем с потоками в будущем.