你可以建议我(Android / JAVA中的新手)处理相对大量数据的最有效方法是什么?
我需要为一个大数据类型(x1,y1,z1 - double,flag1 ... flagn - boolean,desc1 ... descn - string)计算1000 ... 5000个元素中的每一个的一些东西经常(每秒一次),这就是为什么我想做的尽可能快。
哪种方式最好?声明一个多维数组,或为每个元素(x1 [i],y1 [i] ...),特殊类,某种JavaBean生成一个数组?哪一个在速度等方面效率最高?在Java中处理这类事情的最常用方法是什么?
非常感谢提前!
答案 0 :(得分:3)
一些反向环境计算显示,对于5000个双精度数组,你将使用8个字节* 5000 = 40,000个字节或大约40 kB的内存。这不是太糟糕,因为大多数Android设备上的内存大小甚至是千兆字节。一个好的'ol ArrayList应该可以很好地存储这些数据。 通过在构造函数中指定ArrayLists长度,可能会使事情变得更快。这样,每次向其添加更多数据时,Arraylist都不必动态扩展。
但是要谨慎。由于我们使用的是内存受限设备,可能会发生的情况是,如果您连续快速生成大量这些ArrayLists,您可能会开始大量触发垃圾收集器。这可能会导致您的应用速度变慢(实际上整个设备)。如果你真的要生成大量数据,那就不要将它存储在内存中。将它存放在磁盘上,你将有足够的空间,不会一直触发垃圾收集器。
答案 1 :(得分:1)
我认为您在每个元素上编写计算所需的效率比用于存储它的数据结构更重要。为每个元素或对象数组(每个都是包含所有元素的类的实例)使用数组之间的区别实际上应该可以忽略不计。使用您认为最舒适的数据结构,并专注于编写有效的算法。