gpt4 book ai didi

java - 将运算结果赋给常量

转载 作者:行者123 更新时间:2023-11-29 05:12:57 25 4
gpt4 key购买 nike

我正在尝试进行微小的修改以提高程序的性能。特别是,在常数。我有以下常量:WIDTH = x、HEIGHT = y 和 AREA = x*y。

现在,java 在使用常量 AREA 时如何进行?

它是否每次都计算 x * y 的结果并在需要的地方使用它?还是在开始时计算一次 x*y,并将结果存储在“可变”AREA 下?

换句话说,假设 WIDTH = 10,HEIGHT = 20;自己计算并分配 AREA = 200 更好吗?或者只写 AREA = WIDTH*HEIGHT?还假设您会在程序中多次需要这个常量。

就我而言,我认为它在性能/效率方面并不重要,但我想在大型程序中它会很重要。

谢谢!

编辑:为了清楚说明“常量”的含义:

例如

final static int WIDTH = 10, 
HEIGHT = 20,
AREA = HEIGHT*WIDTH;

最佳答案

假设你的意思是:

 public class Test {
final static int WIDTH = 10, HEIGHT = 20, AREA = HEIGHT * WIDTH;
}

那么这三个常量都是编译时常量。另一方面,在

 public class Test {
static int WIDTH = 10, HEIGHT = 20, AREA = HEIGHT * WIDTH;
}

变量不是常量,但表达式仍然只计算一次......当 Test 类被初始化时。

唯一会多次执行表达式的情况是这样的:

 public class Test {
final int WIDTH = 10, HEIGHT = 20, AREA = HEIGHT * WIDTH; // non-static field
}

或者这个:

 public class Test {
public void method() {
final int WIDTH = 10, HEIGHT = 20, AREA = HEIGHT * WIDTH; // local variable
}
}

但在所有情况下,每次声明被求值时,表达式只会在运行时求值一次(如果有的话)。当(例如)您使用常量或变量时,它不会被评估。


你说:

In my case, I don't think it matters much in terms of performance/efficiency, but I imagine in large programs it would.

在有静态的情况下,与(仅)程序启动开销的其余部分相比,差异太小而不相关。

可能在非静态情况下相关,但可能不相关。这取决于相对于应用程序正在做的所有其他事情,表达式被评估的频率。


建议:在此级别尝试优化代码通常是浪费时间……除非 1) 您已经测量了应用程序性能并确定它确实是一个问题,并且 2) 您有分析应用程序并确定您正在考虑的代码部分确实是性能瓶颈。

关于java - 将运算结果赋给常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675848/

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