gpt4 book ai didi

java - 追加字符串 - 性能问题 - Java 6

转载 作者:行者123 更新时间:2023-11-29 03:12:16 27 4
gpt4 key购买 nike

我需要重复 append 字符串(大约 50 次),这是另一个 StringBuilder 的子字符串。我需要为大约 30k 输入执行此操作。这需要我大约 6 分钟的时间。

 StringBuilder input = new StringBuilder(10000);
StringBuilder output = new StringBuilder(10000);

//for 循环直到文件末尾将字符串读入变量'input'

{
output.append(input.substring(1, 8));
output.append(input.substring(33, 45));
output.append(input.substring(20, 25)); // and so on
}

这花了大约 6 分钟。

所以,我尝试了类似的东西

{


output.append(input.substring(1, 8) + output.append(input.substring(33, 45) + output.append(input.substring20, 25) + .. // and so on );

这个,也有同步的。我知道这两个是一样的。

但是,即使我使用了 StringBuilder,为什么我仍然有性能延迟?我做错了什么吗?

我提到了:StringBuilder vs String concatenation in toString() in JavaString concatenation in Java - when to use +, StringBuilder and concat还有一些。他们中的大多数建议使用 StringBuilder。

最佳答案

您绝对可以避免使用 append 的重载创建如此多的对象,它允许您指定一个子序列:

for (...)
{
output.append(input, 1, 8);
output.append(input, 33, 45);
output.append(input, 20, 25);
}

这可能对您有帮助,也可能没有帮助。你的第二个例子中的字符串连接绝对应该避免 - 我很惊讶它没有产生巨大的差异......这表明它很可能不是花费时间的 append ,但不管是什么读取输入。

要对此进行测试,您可能应该尝试一个 for 循环,这样您仍然在读取所有相同的输入,但不会 append 到输出 完全没有。

关于java - 追加字符串 - 性能问题 - Java 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com