А>Их вариант реализации текстовой строки в виже дерева, тоже не плох,
А>в ряде случаев может существенно ускорить работу алгоритма.
не очень понятно какого алгоритма кроме канкатенации строк в микробенчмарке
доступ к данным будет очень очень медленным. собственно, если добавить в их бенчмарк получение строки после канкатенации:
print("StringBuilder \"append\" : ");
startTime();
for (int i=0; i < 100; i++) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < COUNT; j++) {
sb.append(PLUS_STRING);
}
!!!! String x = sb.toString();
}
endTime(100);
print("Text \"concat\" (stack): ");
startTime();
for (int i=0; i < 100; i++) {
PoolContext.enter();
Text txt = Text.EMPTY;
for (int j = 0; j < COUNT; j++) {
txt = txt.concat(PLUS_TEXT);
}
!!!! String x = txt.toString();
PoolContext.exit();
}
endTime(100);
то Text сольет вчистую, а без получения строки канкатенация бессмыслена (нельзя распечатать Text напрямую, нельзя его записать в файл или отправить в поток...). не говоря уже о том, что у StringBuilder есть замечательный метод setLength(0) с применением которого Text сливает в 3-5 раз.
конечно, insert & delete — да, тут Text рвет всех, как-же копировать не надо... только вот GC начнет сильно тормозить из-за огромного кол-ва созданных мелких объектов, а борьба с ним вродебы и была главной целью этого Javolution. да и insert/delete достаточно редкие операции. кроме того, память будет кушать нехило т.к. при delete неиспользованная информация будет оставаться в памяти (причем надолго — пул ведь).
A> Данная штука полезна при реализации вычислительных алгоритмов.
A> Например, парсеры из одного формата в другой.
насчет парсеров — очень сильно сомневаюсь, если использовать простейшие оптимизации то Javolution сольет по перформансу... единственная возможная польза — это меньшие GC паузы. но, с современными коллекторами весьма сомнительный плюс с учетом того что создание объекта происходит быстрее чем его взятие из пула, кроме того, GC все равно будет происходить и непонятно что хуже — уничтожение объектов или намного более сложное дерево ссылок.