有没有理由继续使用int而不是64位机器?

时间:2015-06-10 15:11:57

标签: java 64-bit 32bit-64bit

一般来说,如果在64位架构上进行编程,是否还有理由在Java中使用int而不是long

特别是在我的情况下:

我使用int变量映射到Oracle DB表上类型为NUMBER的键(从1开始并为每个新条目递增的序号)。

数据库类型NUMBER的精度比int更高,因此在Java端建模的正确方法是long

出于效率原因,我坚持使用int,因为表格中可能永远不会有这么多条目需要超过int代表的内容。

另一方面,由于大多数现代机器都是64位,因此使用long而不是int对Java端的效率应该没有区别,对吧?我想如果你将大量的密钥列表加载到内存中,那将会对内存产生影响,但我们并没有进行这种操作。

1 个答案:

答案 0 :(得分:2)

在64位处理器上,long会因为对齐,寄存器等而无法提供边际性能提升(无论这个实际上是否明显是有争议的)。这带来了在堆栈和堆上使用更多空间的缺点,这本身可能会对性能产生负面影响。真的,这取决于你的程序,因为有很多因素会影响性能。

我建议使用int,除非您特别需要64位数字。如果您确定您正在为x86_64架构进行编程,那么我认为它并不重要,因为它们都经过优化,无论如何都能非常有效地处理32位程序。