gpt4 book ai didi

java在内存分配方面的效率比较

转载 作者:行者123 更新时间:2023-12-03 22:32:37 24 4
gpt4 key购买 nike

这可能是一个重复的问题,但我找不到我正在搜索的内容。如果存在,请原谅重复。

我想了解以下部分代码在内存分配方面是否相同。

//first
int n = some_number;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
int a = something;
}
}

//second
int i, j, a;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
a = something;
}
}

我想知道,如果 java 在与第二个代码一样,第一个代码或两者仅分配一次。

我在 Java 中尝试了这几次,但结果不一致,比如在一次试验中第一次是 8 秒,第二次是 9 秒,在另一次试验中是相反的。所以,我想确定它们是否相等,

谢谢

最佳答案

查看是否存在差异的一种简单方法是检查字节码。

第一个版本编译为:

  public static void f();
Code:
0: bipush 100
2: istore_0
3: iconst_0
4: istore_1
5: goto 26
8: iconst_0
9: istore_2
10: goto 18
13: iconst_3
14: istore_3
15: iinc 2, 1
18: iload_2
19: iload_0
20: if_icmplt 13
23: iinc 1, 1
26: iload_1
27: iload_0
28: if_icmplt 8
31: return

而第二个编译为:

  public static void g();
Code:
0: bipush 100
2: istore_3
3: iconst_0
4: istore_0
5: goto 26
8: iconst_0
9: istore_1
10: goto 18
13: iconst_3
14: istore_2
15: iinc 1, 1
18: iload_1
19: iload_3
20: if_icmplt 13
23: iinc 0, 1
26: iload_0
27: iload_3
28: if_icmplt 8
31: return

如果仔细比较它们,您会发现它们本质上是相同的。

从风格上讲,我认为最好在变量首次使用时尽可能接近地声明变量。考虑到这一点,我会选择第一个版本而不是第二个版本。

关于java在内存分配方面的效率比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942926/

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