【发布时间】:2013-02-13 15:20:12
【问题描述】:
我正在编写一个大型应用程序,我试图在其中尽可能多地节省内存并提高性能。因此,当我知道一个字段的值只能从 0 到 10 或从 -100 到 100 时,我会尝试使用 short 数据类型而不是 int。
这对于其余代码意味着什么,但是当我调用这些函数时,我必须将简单的ints 向下转换为shorts。例如:
方法签名
public void coordinates(short x, short y) ...
方法调用
obj.coordinates((short) 1, (short) 2);
在我的整个代码中都是这样,因为文字被视为ints,并且不会根据函数参数自动向下转换或键入。
因此,一旦发生这种向下转换,任何性能或内存增益实际上是否显着?还是转换过程如此高效以至于我仍然可以获得一些收益?
【问题讨论】:
-
如果您的值在固定范围内,您可以使用对象池来减少内存。
-
虽然和你的问题不一样,但我建议阅读这里的讨论:stackoverflow.com/questions/2165246/… 和这里:stackoverflow.com/questions/2170872/…
-
@FrankvanPuffelen 谢谢,我会看看他们。
-
我相信 Sun JVM 在内部将
byte、short和int存储为 32 位字。因此使用short不会为您节省任何内存。 -
关于“尽量节省内存并提高性能”,我建议您进行一些性能测试,以确保您确实正在节省内存并提高性能。我认为,如果事实证明你跳过所有这些铸造圈而几乎没有任何好处,那将是不幸的。
标签: java performance primitive downcast