Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组性能以及如何获得自变量的性能_Java_Arrays_Performance - Fatal编程技术网

Java 数组性能以及如何获得自变量的性能

Java 数组性能以及如何获得自变量的性能,java,arrays,performance,Java,Arrays,Performance,我正在编写一个Java项目,它使用一个自定义对象——smallObject,它主要由双变量组成 现在随着项目的发展,我要求smallObject中的每个变量都变成一个由4个元素组成的数组——因此,双变量变成了一个由4个元素组成的double类型的数组——bigObject 使用bigObject的进程与smallObject完全相同,唯一的区别是它们包含一个元素编号,因此smallObject.a=4变为bigObject.a[2]=4 我希望,由于每次访问阵列时,我都会精确定义所需的元素(不必

我正在编写一个Java项目,它使用一个自定义对象——smallObject,它主要由双变量组成

现在随着项目的发展,我要求smallObject中的每个变量都变成一个由4个元素组成的数组——因此,双变量变成了一个由4个元素组成的double类型的数组——bigObject

使用bigObject的进程与smallObject完全相同,唯一的区别是它们包含一个元素编号,因此smallObject.a=4变为bigObject.a[2]=4

我希望,由于每次访问阵列时,我都会精确定义所需的元素(不必搜索),因此性能应该大致相同,但是性能降低了2-3倍。这些对象用于ArrayList和队列中,它们最多可以包含300万个元素

是否预期性能会降低?我怎样才能绕过这个问题?我们考虑使用单个变量(a[4],变成a1、a2、a3、a4)-但这需要我有不同的类,以便每个类都访问正确的变量,并使代码无法读取


谢谢您的时间。

据我所知,如果您使用基于列表的对象来查找位置4中的元素,您必须从1到4,因为列表是基于指针的(O(n),其中n是数组中的元素数,如果您使用大O表示法)。如果你使用更简单的元素,比如真正的双数组,那么访问元素4应该在1操作O(1)中完成。。。所以尽量使用double[] 希望这对您有所帮助。

Alex

数组访问总是涉及到边界检查,增加了可能变得重要的性能影响。代码片段可能有助于找到答案。您可能会遇到边界检查和(可能更多)糟糕的数据局部性问题。用单个变量替换数组可能会有所帮助,但有更简单的方法。我们首先需要一些代码…只有
LinkedList
具有
O(n)
访问权限,并且OP已经在使用数组了。答案是错误的,完全没有抓住问题的重点。