返回

提问 添加收藏

Java 为什么在for循环内部定义变量后运算比在外部速度更快?

本页包含2张图片,默认未加载,显示所有图片

yzf_stu111 发布于 2020年03月26日 (共有2个回帖)

最近在复习for循环写了如下的代码
public void test1() {
        int res = 0;
        int n = 1;

        for(int i = 0; i < 2000000000; ++i) {
            res += n;
        }

    }
        
public void test2() {
        int res = 0;

        for(int i = 0; i < 2000000000; ++i) {
            int n = 1;
            res += n;
        }

    }


一开始我以为test2()需要不断地创建n会导致性能下降,但是测试的结果完全反了过来。

点击加载图片

查看了字节码之后发现编译器没有做什么优化。(不是很会看)

点击加载图片

想请问各位大神,是哪里导致速度相差这么大?
 

Java
文明上网,理性发言
客户端 Android iPhone WP7