我正在编写一个Java项目,它使用了一个自定义对象-- smallObject,它主要由双变量组成。
现在,随着项目的发展,我要求smallObject中的每个变量都变成一个包含4个元素的数组-因此,原来的双精度变量变成了具有4个元素的double类型的数组- bigObject。
使用bigObject的进程与smallObject完全相同,唯一的区别是它们包含一个元素编号,因此,bigObject.a2 = 4变成了smallObject.a = 4;
我期望的是,由于每次我访问数组时,我精确地定义了我需要的元素(不需要搜索它),所以性能应该大致相同,然而,性能降低了2-3倍。这些对象用在数组列表和队列中,可以增加到300万个元素。
性能下降是意料之中的吗?我该如何解决这个问题呢?我考虑使用单独的变量(a4,变成a1,a2,a3,a4) -但这需要我有不同的类,以便每个类都访问正确的变量,并使代码不可读。
耽误您时间,实在对不起。
发布于 2017-11-20 17:03:52
据我所知,如果你使用基于列表的对象来查找位置4中的元素,你必须从1到4,因为列表是基于指针的(O(n),其中n是数组的元素数,如果你习惯于大的O表示法)。如果你使用更简单的元素,比如真正的双倍数组,那么访问元素4应该在1次操作O(1)中完成...所以试着使用double[]。
希望这能对你有所帮助。
亚历克斯
https://stackoverflow.com/questions/47388128
复制相似问题