我在字符串处理方面遇到了性能问题。
我有一个日志文件(简单的文本文件),我必须操作它并在文本中执行一些更改。
所以程序在一个巨大的字符串中逐行添加。
基本上是这样。
while (not_finished) {
// create new stringAdd;
stringResult=stringResult + stringAdd + "\n";
}
// output to a textArea in window
textArea.setText(stringResult);
现在这方面的表现很糟糕,所以我升级到 StringBuilder
StringBuilder result= new StringBuilder();
while (not_finished) {
// create new stringAdd;
result.append( stringAdd +"\n");
}
// output to a textArea in window
textArea.setText(result.toString());
这要快得多。字符串一旦添加到结果将不会改变。 当超过 400,000 行(一行有 1 到 70 个字符)时,问题不在于性能。
如何提高构建字符串的性能? 你有什么想法吗?
最佳答案
有两件事可以改进。您仍在循环内连接字符串,因此您可以尝试:
result.append(stringAdd).append('\n');
如果你事先知道字符串的大小,你可以最小化内部缓冲区调整大小的次数:
// expecting 30k characters:
StringBuilder result= new StringBuilder(30_000);
关于java - Java 中的字符串构建性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802704/