我的Android应用程序将使用大型和非常大型的文件(即介于10MB和2GB之间的大小)。
我一直在思考智能手机使用哪种硬件进行稳定存储,以及与PC硬盘的文件读取/寻道等软件考虑是否相似。我尝试找到有关硬件的信息,并且对此有了某种了解(内部存储,SD卡),但是我查阅的所有来源都不够全面和/或具体。我的相关问题如下:
- 在“现代”智能手机上阅读大文件(例如在Android 2.2手机上)时,在磁盘寻道/读取性能方面与PC上Java应用程序执行相同操作时必须考虑哪些主要区别?(显然,手机RAM比PC上小,因此必须考虑缓冲区等因素。)
- 智能手机使用的稳定存储硬件与PC硬盘相比,(相关的)主要区别是什么?(我知道这是一个非常广泛的问题,因此我甚至欣赏一个非常简短的答案以及可能的几个可靠的外部URLs)
- 在InputStream读取和寻道(skipBytes)方面,使用内部存储和SD卡(我故意没有写“外部存储”,因为不是在每个设备上都是SD卡)之间是否有差异? SD卡速度较慢吗?
- 例如,我想从2GB文件中读取2MB的数据,这2MB数据分布在文件的许多不同/遥远的部分中。所有偏移量都已知,因此我创建了一个偏移量的升序,并使用BufferedInputStream.read()(例如在DataInputStream中)来读取它们(并在必要时使用skipBytes进行寻道)。因此,在底层文件系统中,这可能需要“浏览”整个2GB文件。(例如,Android在需要时使用Linux函数在文件中搜索。)但是,磁盘寻道是否像PC硬盘那样有效?就寻道效率而言,SD卡和内部存储有什么区别?
我知道为我的具体应用程序进行基准测试是必要的,但我也欢迎在这个问题上得到理论上的澄清。
重要提示:当我问“…在寻找方面是否像 PC 硬盘一样有效?”时,我不仅指绝对值,还包括机制。也就是说,如果它基于相同的逻辑原则工作(=尽可能跳过大部分内容),或者存在一些缺陷(例如,在 SD 卡上无法进行“跳过式”查找,因此在智能手机硬件上,“跳过式”操作比在 PC 硬盘上无用得多,即非成比例的)。