StringBuilder是否足够慢以至于我应该缓存其结果?

时间:2011-12-06 01:02:58

标签: java caching redis stringbuilder

我正在编写一些代码来从Java访问Redis,因此我需要创建很多字符串作为键。当然,这些键有一个模式,我将重复为相同的访问重新生成相同的键。

我正在考虑为生成的密钥实现缓存(基于DAO参数),但即使考虑到缓存的速度,我也想知道加速是否值得复杂。

密钥由一个与3-7字符串连接的UUID组成。在这种情况下,StringBuilder是否足够缓慢以保证缓存?

2 个答案:

答案 0 :(得分:3)

只有分析可以肯定地告诉你,但如果你正在缓存这些,你必须有一些方法从缓存中获取它们,并且这可能至少与使用StringBuilder一样多。

在执行

之类的操作时,内部使用StringBuilder
String result = strPart1 + strPart2;

答案 1 :(得分:1)

像其他人一样说,个人资料。如果修复了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。它也比缓存更简单。