gpt4 book ai didi

java - 对于最多 9-10 步的字符串连接,是否有比 StringBuilder 更快的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:14 25 4
gpt4 key购买 nike

我有这段代码来连接一些数组元素:

StringBuilder sb = new StringBuilder();
private RatedMessage joinMessage(int step, boolean isresult) {
sb.delete(0, sb.length());
RatedMessage rm;
for (int i = 0; i <= step; i++) {
if (mStack[i] == null)
continue;
rm = mStack[i].getCurrentMsg();// msg is built upfront, this just returns, it's a getter method call
if (rm == null || rm.msg.length() == 0)
continue;
if (sb.length() != 0) {
sb.append(", ");
}
sb.append(rm.msg);
}
rm.msg=sb.toString();
return rm;
}

重要的是数组最多包含 10 个项目,所以它不是很多。

我的跟踪输出告诉我这个方法被调用了 18864 次,16% 的运行时间花在了这个方法上。我可以优化更多吗?

最佳答案

首先,我不会重用 StringBuilder 并始终创建新实例。这肯定会更快,因为它允许 GC 使用年轻代堆区域。

另一个可以消除至少一个 if 语句的小技巧是像这样重写您的代码:

    String separator = "";
for (int i = 0; i <= step; i++) {
...
sb.append(separator);
sb.append(rm.msg);
separator = ", ";
}

关于java - 对于最多 9-10 步的字符串连接,是否有比 StringBuilder 更快的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908307/

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