java - 在 for 声明中调用 .length() 比在循环之前调用 .length() 慢?

标签 java optimization for-loop micro-optimization

在Java代码中,我认为:

for (int i = 0; i < s.length(); i++) {
    // do a lot of something
}

比这慢:

int length = s.length();
for (int i = 0; i < length; i++) {
    // do a lot of something
}

请告诉我我是否正确。

最佳答案

理论上,第一个代码示例可能会更慢,因为它每次迭代都会调用 s.length() 一次。但 JVM 可能会为您优化第一段代码。使用更简单的方法,除非基准测试表明:

  1. 您正在执行一段对性能至关重要的代码。
  2. 将长度存储在局部变量中实际上确实可以提高速度。

关于java - 在 for 声明中调用 .length() 比在循环之前调用 .length() 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487807/

相关文章:

java - 如何使用 Java 8 流迭代 x 次?

java - 为什么 appcompat-v7 :22. 2.0 会破坏 ActionMode 覆盖 ActionBar?

java - Hibernate 找不到正确的外键

java - 无法从 ant 脚本调用 wsdl 代码生成器

performance - 加载 Meteor 页面时的 sockjs JSONP 请求是什么,如何优化下载速度?

C 编译器优化 - 涉及算术的宏

Java:不同的链流和连接流

c++ - 编译后 ASM 优化丢失了吗?

batch-file - 在批处理脚本的for循环中重定向命令的输出

php - 使用 while 或 foreach 语句启动相同的循环