Является ли StringBuilder достаточно медленным, чтобы я мог кэшировать его результат? - PullRequest
1 голос
/ 06 декабря 2011

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

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

Ключи состоят из UUID, объединенного со строкой из 3-7 символов. Достаточно ли медленен StringBuilder в этом сценарии, чтобы гарантировать кеш?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

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

StringBuilder используется для внутренних целей, например

String result = strPart1 + strPart2;
1 голос
/ 06 декабря 2011

Как все говорят, профиль.Если UUID фиксирован, вы можете немного ускорить процесс следующим образом:

public class KeyGenerator {
    private final StringBuilder sb;
    private final int uidLen;

    public KeyGenerator(String uid) {
        sb = new StringBuilder(uid);
        uidLen = uid.length();
    }

    public String getKey(String suffix) {
        sb.setLength(uidLen);
        sb.append(suffix);
        return sb.toString();
    }
}

Это экономит создание нового StringBuilder и добавление uid каждый раз, когда вам нужен ключ.Это также немного проще, чем кеш.

...