我的 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()
(例如在 a 中DataInputStream
)来读取它们(并skipBytes()
在必要时用于查找)。因此,在底层文件系统中,这可能需要“遍历”整个 2GB 文件。(例如,Android 在需要时使用 linux 函数在文件中查找。)但是,查找是否与在 PC 硬盘中一样有效?SD卡与内部存储在寻道效率方面如何? - 典型的数据读取速度是多少?(智能手机内部存储 vs. SD 卡 vs. PC 非 SSD 硬盘)
我知道对我的具体应用程序进行基准测试是必须的,但我也欢迎对此事进行理论上的澄清。
重要提示:当我问“......寻求与 PC 硬盘一样高效?”时,我(仅)不是指绝对值,还指它的机制。也就是说,如果它基于相同的逻辑原理工作(= 尽可能跳过大部分),或者存在一些缺点(例如,在 SD 卡上不可能进行这种“基于跳过”的搜索,因此跳过更多 - - 即不成比例- 在智能手机硬件上比在 PC 硬盘上没用)。