java - 更改字符串值与 if 语句的性能

标签 java performance

我在看约翰的回答here并认为它很光滑。我想知道是否可以使用 if 语句进一步改进它,但我不确定 if 语句是否会执行得更好。

if 语句是否比更改 String 的值“成本更高”?

String prefix = "";
for (String serverId : serverIds) {
  sb.append(prefix);
  prefix = ",";
  sb.append(serverId);
}

对比

String prefix = "";
for (String serverId : serverIds) {
  sb.append(prefix);
  if( prefix.equals( "" ) {
      prefix = ",";
  }
  sb.append(serverId);
}

最佳答案

第二个版本肯定会更慢。它不仅仅是一个 if,也是一个 equals 调用,而且大多数时候两个比较的字符串会不同,因此 equals 方法不会提前返回 - 相反它比简单的赋值做更多的工作(查看源代码String 中的 equals 方法的详细信息)。

当然,大多数时候可读性比速度更重要,Guava Joiner 可以帮助您编写非常清晰的代码。

关于java - 更改字符串值与 if 语句的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147092/

相关文章:

java - 如何将两个相关对象以一对一关系保存到数据库中

java - JPanel 未显示

ios - 更快地启动 iOS 应用程序

arrays - 如何使用二进制、变量查找和 foreach 优化代码?

python - Python 中简单事物的类或闭包

java - 使用java运行javac编译的groovy代码?

java - 如何从各种视频文件格式中提取元数据?

java - Runtime.getRuntime().exec ("ls"没有输出)

javascript - Android 上的 crossWalk cordova touchmove 性能问题

performance - 为什么 GNU 并行会影响脚本速度?