java - 性能提示问题

标签 java android

public void zero() {
    int sum = 0;
    for (int i = 0; i < mArray.length; ++i) {
        sum += mArray[i].mSplat;
    }
}

public void one() {
    int sum = 0;
    Foo[] localArray = mArray;
    int len = localArray.length;

    for (int i = 0; i < len; ++i) {
        sum += localArray[i].mSplat;
    }
}

根据 Android documentation ,在上面的代码中,零速度较慢。但我不明白为什么?好吧,我还没有学到那么深,但据我所知,length 是一个字段而不是方法。那么当循环检索它的值时,它与从局部变量中检索有何不同?并且数组长度在初始化后始终是固定的。我错过了什么?

最佳答案

嗯,我想这是因为在时,他总是需要从mArray中检索信息,而在时,他可以访问它.这意味着,zero 需要两个“方法”:

  1. 访问 mArray
  2. 获取mArray.length

但是一个只需要一个“方法”:

  1. 访问len

关于java - 性能提示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18206197/

相关文章:

android - 将 Facebook SDK 导入我的 android 项目 - Gradle 错误

java - Android:在 Switch 语句中嵌套 for 循环以获取 ArrayList 的总和

android - (React-Native 0.62.0)越来越找不到项目的匹配变体:react-native-community_async-storage(其他库也一样)

java - out.absolute.dir 在 Linux 中是什么意思?

Java - 使用二维数组创建按钮网格

java - 在 Spring Boot 服务中的自定义约束 validator 之前,Json 消息解析失败

java - 如果 Android 中包含另一个 Activity,则 ListView 不会填充

java - getActionBar 显示 null

java - 在 Ruby 中实现 Java 应用程序

java - 如何从 HttpServletRequest 获取 URL 的一部分?