2015-09-30 8 views
1

У меня есть метод, в котором у меня есть URL-адрес ввода как String, и мне нужно удалить суффикс из него и добавить другой. По этой причине я использую StringBuilder, но мне интересно, нужно ли указывать точную емкость строителя Builder или полагаться на значение по умолчанию , которого будет недостаточно во всех моих случаях, поэтому емкость будет постоянно расширяться в коде.Укажите точную емкость StringBuilder или используйте значение по умолчанию?

Мой код выглядит так:

private String constructString(final String url, final String suffixToRemove, final String suffixToAdd) { 
     StringBuilder result = new StringBuilder(url.length() - suffixToRemove.length() + suffixToAdd.length()); 
     ..... 
    } 

Я хочу, чтобы определить, будет ли это быстрее поставить емкость по умолчанию Builder или поставить точный потенциал, построенный путем получения .length из трех строк. Есть String.length медленная работа?

+4

Звучит как микро-оптимизация для меня. Если вы не собираетесь помещать * огромное количество текста в 'StringBuilder', я бы не стал устанавливать его начальный размер вообще. – JonK

+0

Да, это микро оптимизация. И мне было интересно, что лучше. – Xelian

ответ

0

Вы можете просто сделать это:

final int len = url.length() - suffixToRemove.length(); 
final StringBuilder sb = new StringBuilder(url); 
sb.setLength(len); 
return sb.append(suffixToAdd).toString(); 
0

только для больших текстов она позволяет избежать повторных увеличивается. Для небольших струн он может использовать размер, который является достаточно маленьким, и редко требует увеличения. но вычисление целочисленного выражения, с несколькими .length(), безусловно, превысит цель и может быть даже медленнее, чем 80 (по умолчанию я полагаю, что 16).

Микро-оптимизация и подрыв для чтения кода.

 Смежные вопросы

  • Нет связанных вопросов^_^