【发布时间】:2012-10-14 01:26:46
【问题描述】:
我的 Android 应用程序将使用大文件和非常大的文件(即大小在 10MB 和 2GB 之间)。
我一直想知道智能手机使用什么硬件来实现稳定存储,以及这里的软件(文件读取/查找)注意事项是否与 PC 硬盘相似。我试图查找有关硬件的信息并对其进行某种描述(内部存储、SD 卡),但我检查的所有来源都不够全面和/或具体。我的(相互关联的)问题是:
- 在“现代”智能手机(例如 Android 2.2. 手机)上读取大文件时,与在 PC 上使用 Java 应用程序执行相同操作时,我必须考虑哪些主要差异? (就磁盘查找/读取性能而言;显然,手机 RAM 比 PC 小,因此在缓冲区等情况下必须考虑到这一点。)
- 与 PC 硬盘相比,智能手机中使用的稳定存储硬件有哪些(相关的)主要区别? (我知道这是一个非常广泛的问题,所以我什至很感谢这里的一个非常简短的回答,可能还有一些可靠的外部 URL)
- 在
InputStream读取和查找(skipBytes)方面,使用内部存储和SD卡之间是否有区别(例如在Android上)(我故意没有写“外部存储”,因为它不一定每个设备上的 SD 卡)? SD 卡慢吗? - 例如,我想从一个 2GB 的文件中读取 2MB 的数据,而这 2MB 的数据分布在文件的许多不同/遥远的部分。所有偏移量都是已知的,因此我创建了一个升序的偏移量,然后使用
BufferedInputStream.read()(例如在DataInputStream)来读取它们(并在必要时使用skipBytes()进行搜索)。因此,在底层文件系统中,这可能需要“遍历”整个 2GB 文件。 (例如,Android 在需要时使用 linux 函数在文件中查找。)但是,查找是否与在 PC 硬盘中一样有效? SD 卡与内部存储在寻道效率方面如何? - 典型的数据读取速度是多少? (智能手机内部存储 vs. SD 卡 vs. PC 非 SSD 硬盘)
我知道对我的具体应用程序进行基准测试是必须的,但我也欢迎对此事进行理论上的澄清。
重要提示:当我问“......是否像在 PC 硬盘中一样高效?”时,我不仅指绝对值,还指 机制。也就是说,如果它基于相同的逻辑原理工作(= 尽可能跳过大部分),或者存在一些缺点(例如,在 SD 卡上不可能进行这种“基于跳过”的搜索,因此跳过更多 - - 即不成比例地 - 在智能手机硬件上比在 PC 硬盘上没用)。
【问题讨论】:
-
What are typical data read speeds?它在每个系统/设备上有所不同,因为它与处理器和芯片组绑定。在这种情况下,现代智能手机可能比赛扬处理器计算机更快,同样 -
关于克劳斯·维拉卡的回答中“寻求总是一项缓慢的任务”的说法,我不得不不同意。这通常不是真的。例如根据我所听到的,在 SD 卡上,它甚至可能比在硬盘上更快(由于 SD 卡硬件的性质)。 IE。选择随机位置可能比在 PC 硬盘上更快。
标签: android inputstream smartphone seek persistent-storage