一般来说,如果在64位架构上进行编程,是否还有理由在Java中使用int
而不是long
?
特别是在我的情况下:
我使用int
变量映射到Oracle DB表上类型为NUMBER的键(从1开始并为每个新条目递增的序号)。
数据库类型NUMBER
的精度比int
更高,因此在Java端建模的正确方法是long
。
出于效率原因,我坚持使用int
,因为表格中可能永远不会有这么多条目需要超过int
代表的内容。
另一方面,由于大多数现代机器都是64位,因此使用long
而不是int
对Java端的效率应该没有区别,对吧?我想如果你将大量的密钥列表加载到内存中,那将会对内存产生影响,但我们并没有进行这种操作。
答案 0 :(得分:2)
在64位处理器上,long
会因为对齐,寄存器等而无法提供边际性能提升(无论这个实际上是否明显是有争议的)。这带来了在堆栈和堆上使用更多空间的缺点,这本身可能会对性能产生负面影响。真的,这取决于你的程序,因为有很多因素会影响性能。
我建议使用int
,除非您特别需要64位数字。如果您确定您正在为x86_64架构进行编程,那么我认为它并不重要,因为它们都经过优化,无论如何都能非常有效地处理32位程序。