首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中交换对象或原语是否更昂贵?

在java中交换对象或原语是否更昂贵?
EN

Stack Overflow用户
提问于 2015-05-11 02:22:01
回答 3查看 130关注 0票数 1

假设我有一个类似对象的数组。为了方便,想想Integer吧。但实际上,它可能是一些虚构的数据类型,如汽车或其他东西。再说一遍,我要找到那个极端。换指数便宜吗?那些东西?还是没什么关系?换句话说,示例A或示例B更便宜

示例A

代码语言:javascript
运行
复制
int least = 0;
for(int i=1; i<objects.length;i++)
  if(objects[i].isLessThan(objects[least)) least= i;

示例B

代码语言:javascript
运行
复制
Stuff least = objects[0];
for(int i=1; i<objects.length;i++)
  if(objects[i].isLessThan(objects[least)) least= objects[i];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-11 02:29:10

应该是一样的。如果您没有首先访问objects[i]来执行比较,那么由于CPU缓存之外的内存访问而引入的延迟可能是一个问题,但是由于您已经访问了objects[i],这不太可能是一个问题。

在非常大的数组(大于缓存的页面大小)中,交换对象可能会更快,因为不需要为每个比较检索objects[least],但这是猜测。

票数 2
EN

Stack Overflow用户

发布于 2015-05-11 02:28:20

在Java中,每个变量要么是原始变量,要么是引用类型( Car类型的变量只包含对Car实例的引用)。也就是说,所有变量最多都是64位大的,并且可以在一个cpu指令中分配。长话短说:没关系。

票数 2
EN

Stack Overflow用户

发布于 2015-05-11 02:34:23

java中的引用是32位机器上的32位或64位机器上的64位,如果要复制对象,它就是要复制的引用。

一个原始的,另一方面,取决于哪种。例如,一个字节是8位,整数为32。,所以复制一个整数与指针的复制时间一样多(或者在64位机器上复制的时间是它的一半)。

最后,这并不重要,因为您只是在复制引用,而不是指向的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30158790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档