Re[4]: Javolution
От: NotGonnaGetUs  
Дата: 06.03.05 13:27
Оценка:
Я не много о другом говрил.

В оптимизации простого метода типа
String foo(xxx) {
...
return (String)yyy;
}
использование Text не сильно поможет.

А вот переделка его в
Text foo(xxx) {
...
return (Text)yyy;
}
может дать не плохой эффект.

Например, парсер, который из String в хитром формате строит мат.выражение, которое затем может быть вычислено, сравнено и т.д.
Парсер на вход получает строку, на выходе отдаёт экземпляр выражения. Внутри можно смело все String заменить на Text.
Думаю в этом случае можно ожидать прирост производительности.


На счёт того, что доступ к кешу занимает больше времени, чем простое создание объекта...
В случае создания единичных екземпляров класса — кеширование излижне.
Если же у нас работает цикл, в котором постоянно создаётся куча объектов,
при том, что сохраняются ссылки только на небольшое кол-во созданных объектов — выгода может быть.

Вот пример "из жизни".
Map c ключём состоящим из String + int.
В алгоритми часто требовалось проверить(действительно часто, существует ли такой-то элемент.
Для этого я сначала создавал new Key(String, int) и проверял map.contians(key).
Потом, прикинул, и добавил в Key метод reset и в класс использующий кey добавил переменную класса Кey,
которую при необходимости использовал (key.reset(String,int)).
В итоге с 300мс время работы алгоритма снизилось до 100мс.
Если бы key хранился в кеше, а не как поле класса, думаю, результат не сильно отличался бы.


Короче говоря, я не согласен с вашей пессимистической оценкой javalution
и при первой возможно попробую этой штукой воспользоваться
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.