当前位置:  开发笔记 > 编程语言 > 正文

在64位java中使用long而不是int会有好处

如何解决《在64位java中使用long而不是int会有好处》经验,为你挑选了1个好方法。

在64位VM中,使用long而不是int会在性能方面做得更好,因为java中的long是64位,因此在64位系统中拉动和处理64位字可能更快.(我期待很多NO,但我正在寻找详细的解释).

编辑:我暗示"拉和处理64位字可能会更快,在64位系统中提取32位字",因为我假设在64位系统上,拉着一个32位的数据会要求你先拿到64位字然后屏蔽前32位.



1> irreputable..:

使用longfor int可能会减慢你的速度.

您最关心的是int64位CPU 是否需要额外的处理时间.这在现代流水线CPU上极不可能.我们可以通过一个小程序轻松测试.它运行的数据应该足够小,以适应L1缓存,以便我们测试这个特定的问题.在我的机器上(64位Intel Core2 Quad)基本上没有区别.

在真实的应用程序中,大多数数据不能驻留在CPU缓存中.我们必须担心将数据从主内存加载到缓存,这是相对非常慢的,通常是瓶颈.这种加载工作在"高速缓存行"单元上,这是64字节或更多,因此加载单个longint将花费相同的时间.

但是,使用long会浪费宝贵的缓存空间,因此缓存未命中将增加,这非常昂贵.Java的堆空间也很紧张,因此GC活动会增加.

我们可以通过读取具有相同数量元素的巨大long[]int[]数组来证明这一点.它们比缓存可以包含的更大.长版本在我的机器上花费的时间多65%.测试受memory-> cache的吞吐量限制,long []内存量大100%.(为什么不需要100%的时间超出我;显然其他因素也在发挥作用)


@irreputable,为什么要使用long而不是int废弃缓存空间?
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有