我主要是C#和Java开发人员,但这个问题可能适用于任何使用StringBuilder或类似技术的编程语言。
大家都知道,即使连接少量字符串也会严重影响性能(尽管这一点有争议)。我的问题是,有没有人了解在StringBuilder中使用另一个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而不使用其他方法,这是否会造成显著的性能损失?
- 这是一个合理可接受的做法吗?
非常感谢您提供任何帮助。