我听说在32位系统上使用short
s比使用int
更低效。这对于64位系统上的int
是否相同?
Python最近(?)基本上将int
与long
合并,基本上只有一个数据类型long
,对吗?如果你确定你的应用程序。那么只能在64位运行,甚至可以想象(可能是一个好主意)在Java中使用多长时间?
答案 0 :(得分:2)
Python long
具有任意精度,它不是64位。 Python 3将long
更改为int
,因此现在只有一种完整类型的任意精度,这为程序员节省了大量工作。 Java的int是32位,它的长度是64位。在64位整数上,64位处理器通常比32位处理器性能更好。
在64位平台上使用32位整数并不昂贵,至少在x64中是这样。仅出于性能原因,在Java中选择32位超过64位int或反之亦然是没有意义的。如果您使用两个32位整数而不是一个64位整数,那么无论如何它都会更慢。类似地,如果你使用64位,你可以使用32位,在某些平台上会慢一些。换句话说,为您的问题域使用正确的数据类型。
答案 1 :(得分:2)
如果您确定自己的应用。那么只能在64位运行,甚至可以想象(可能是一个好主意)在Java中使用多长时间?
不好主意,IMO
即使在64位JVM(我认为高度怀疑)上使用int
和long
之间存在差异,它也不会很重要足够覆盖整个应用程序,包括您依赖的库,以保证使用long
进行所有操作。
还有一些潜在的问题:
long[]
与int[]
。 (我认为不会有显着的性能差异的原因是,如果有的话,问题将是获取和存储非对齐的int-32。但如果是这样,那么JVM设计者很可能确保int-32字段始终在64位字地址上对齐.JVM通常在32位体系结构上使用int-8和int-16执行此操作...)