所以我主要是一個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
- 是在一個合理的可以接受的做法。
任何現場就此將不勝感激。
這個問題比得到的值得多。這種算法肯定有應用。 – Panzercrisis