繁体   English   中英

在Android中处理大型数据的最快方法是什么?

[英]What is the fastest way to deal with large arrays of data in Android?

你可以建议我(Android / JAVA中的新手)处理相对大量数据的最有效方法是什么?

我需要经常为一个大数据类型(x1,y1,z1 - double,flag1 ... flagn - boolean,desc1 ... descn - string)计算1000 ... 5000个元素中的每一个的一些东西(每秒一次),这就是为什么我想做的尽可能快。

什么方式最好? 声明一个多维数组,或为每个元素(x1 [i],y1 [i] ...),特殊类,某种JavaBean生成一个数组? 哪一个在速度等方面效率最高? 在Java中处理这类事情的最常用方法是哪种?

提前谢谢了!

尼克,你问了一个非常普遍的问题。 我会尽力回答,但请注意,如果你想要更具体的内容,你需要深入研究一下你的问题。

一些反向环形计算表明,对于5000个双精度数组,你将使用8个字节* 5000 = 40,000个字节或大约40 kB的内存。 这不是太糟糕,因为大多数Android设备上的内存大小甚至是千兆字节。 一个好的'ol ArrayList应该可以很好地存储这些数据。 通过在构造函数中指定ArrayLists长度,可以使事情变得更快。 这样,每次向其添加更多数据时,Arraylist都不必动态扩展。

但是要小心谨慎。 由于我们使用的是内存受限设备,可能会发生的情况是,如果您连续快速生成大量这些ArrayLists,您可能会开始大量触发垃圾收集器。 这可能会导致您的应用速度变慢(实际上整个设备)。 如果你真的要生成大量数据,那就不要将它存储在内存中。 将它存放在磁盘上,你将拥有足够的空间,并且不会一直触发垃圾收集器。

我认为您在每个元素上编写计算所需的效率比用于存储它的数据结构更重要。 为每个元素或对象数组(每个都是包含所有元素的类的实例)使用数组之间的区别实际上应该可以忽略不计。 使用您认为最舒适的数据结构,并专注于编写有效的算法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM