【发布时间】:2011-10-15 15:01:42
【问题描述】:
所以我主要是 C# 和 Java 开发人员,但我想这个问题可能与任何使用 StringBuilder 或其衍生的编程语言有关。
好的,因此连接少量字符串可能成为主要的性能杀手,这或多或少是常识(尽管这值得商榷)。我的问题是是否有人知道在字符串生成器中使用字符串生成器的性能影响。为了澄清我的意思,让我包含一些应该有助于说明我的观点的虚拟代码。
我也意识到调用多个 StringBuilder 实例自然会影响性能,但我不相信我会调用它足以导致任何真正的性能问题。 (这个假设也可能是错误的,任何对此都有帮助的意见)
public string StringToGet()
{
StringBuilder sb = new StringBuilder("Some Text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
//etc
return sb.toString();
}
private string MethodThatCreatesAnotherString()
{
StringBuilder sb = new StringBuilder("Other text");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
return sb.ToString();
}
逻辑告诉我这不应该是一个问题,但这种方法的某些内容在我看来似乎不正确。任何人都可以对以下问题有所了解
- 与不使用其他方法和使用单个 StringBuilder 相比,这是否会产生显着更大的性能损失
- 是一种合理可接受的做法。
任何关于此的现场都将不胜感激。
【问题讨论】:
-
这个问题应该得到更多的信任。这种算法肯定有应用。
标签: c# java string stringbuilder