我听说short
在 32 位系统上使用 s 比使用int
s 效率低。这对于int
64 位系统上的 s 是否相同?
Python 最近(?)基本上合并int
了 slong
并且基本上只有一个数据类型long
,对吧?如果您确定您的应用程序。那么只能在 64 位上运行,是否可以想象(可能是个好主意)在 Java 中使用 long 来处理所有内容?
我听说short
在 32 位系统上使用 s 比使用int
s 效率低。这对于int
64 位系统上的 s 是否相同?
Python 最近(?)基本上合并int
了 slong
并且基本上只有一个数据类型long
,对吧?如果您确定您的应用程序。那么只能在 64 位上运行,是否可以想象(可能是个好主意)在 Java 中使用 long 来处理所有内容?
Pythonlong
具有任意精度,它不是 64 位的。Python 3 改为long
,int
所以现在只有一种整数类型的任意精度,这为程序员节省了大量工作。Java 的 int 是 32 位的,它的 long 是 64 位的。64 位处理器在 64 位整数上的性能通常优于 32 位处理器。
在 64 位平台上使用 32 位整数并不昂贵,至少在 x64 中不会。仅仅出于性能原因,在 Java 中选择 32 位而不是 64 位 int 或反之亦然是没有意义的。如果您使用两个 32 位 int 而不是一个 64 位 int,无论如何它都会变慢。同样,如果您使用 64 位,而您本来可以使用 32 位,则在某些平台上会更慢。换句话说,为您的问题域使用正确的数据类型。
如果您确定您的应用程序。那么只能在 64 位上运行,是否可以想象(可能是个好主意)在 Java 中使用 long 来处理所有内容?
坏主意,海事组织
即使在 64 位 JVM 上使用int
和使用之间存在差异(我认为这是非常值得怀疑的),它在整个应用程序中也不够显着,包括您依赖的库来保证使用一切。 long
long
还有一些潜在的问题:
long[]
vs 而言int[]
。 (我认为不会有显着性能差异的原因是,如果有问题,问题将是获取和存储非对齐的 int-32。但如果是这样,JVM 设计人员可能会确保int-32 字段始终在 64 位字地址上对齐。JVM 通常已经在 32 位架构上使用 int-8 和 int-16 执行此操作...)