智能手机上的文件读取性能:内部存储与SD卡与PC硬盘的比较

Tho*_*alc 14 android inputstream smartphone persistent-storage seek

我的Android应用程序将使用大而大的文件(即大小在10MB到2GB之间).

我一直想知道智能手机用于稳定存储的硬件是什么,以及软件(文件读取/搜索)注意事项是否与PC硬盘类似.我试图找到有关硬件的信息并且有一些关于它的图片(内部存储,SD卡),但我检查的所有来源都不是全面和/或具体的.我(相互关联的)问题是:

  1. 在阅读"现代"智能手机(例如Android 2.2手机)上的大文件时,我必须考虑哪些主要差异,与使用PC的Java应用程序做同样的事情相比?(在磁盘搜索/读取性能方面;显然,手机RAM比PC小,所以在缓冲区等情况下必须考虑到这一点)
  2. 智能手机中使用的稳定存储硬件与PC硬盘之间的(相关)主要区别是什么?(我知道这是一个非常广泛的问题,所以我甚至欣赏这里非常简短的答案以及可能的一些可靠的外部URL)
  3. InputStream阅读和搜索方面(skipBytes),使用内部存储和SD卡之间是否存在差异(例如在Android上)(我故意不写"外部存储",因为它不一定是每台设备上的SD卡)?SD卡速度慢吗?
  4. 例如,我想从2GB文件中读取2MB数据,这个2MB数据分布在文件的许多不同/远端部分.所有偏移都是已知的,因此我创建了偏移的升序,然后使用BufferedInputStream.read()(例如在a中DataInputStream)来读取它们(并skipBytes()在必要时用于搜索).因此,在底层文件系统中,这可能需要"遍历"整个2GB文件.(例如Android在需要时使用linux函数在文件中搜索.)然而,正在寻求像PC硬盘一样高效吗?在寻求效率方面,SD卡与内部存储有何关系?
  5. 什么是典型的数据读取速度?(智能手机内部存储与SD卡与PC非SSD硬盘相比)

我知道我的具体应用的基准测试是必须的,但我也欢迎在这个问题上进行理论上的澄清.

重要提示:当我问"......正在寻求与PC硬盘一样高效吗?"时,我(不)只是指绝对值,而是它的机制.也就是说,如果它基于相同的逻辑原理工作(=尽可能跳过大部分),或者存在一些缺点(例如,在SD卡上不能进行这种"基于跳过的"搜索,因此跳过更多 - - 即非比例 - 在智能手机硬件上比在PC硬盘上无用.

Kla*_*aca 2

试图回答你的问题

  1. 只有一个区别,那就是您的文件是否位于应用程序包中(应用程序内),因为您需要使用不同的方法打开它,但是如果它位于应用程序包内并进入package/file/,则可以使用相同的文件文件布拉……

  2. 智能手机的内部存储器比 HDD 更快,但如果将其存储在外部 SDC 卡中,这种情况将会改变,因为 SDC 卡具有最大的读写速度。

  3. 是的,存在差异...如果从内部或 SDCard(不是外部 SD 卡)读取,否则我们不应该使用具有 1 或 2GB 和 16Gb 存储空间的设备。主内存中的所有内容都会运行得更快。

  4. 查找始终是一项缓慢的任务,一旦获得所需的所有日期,即使您没有到达文件末尾,也可以关闭流。为了获得更快的速度,您可以做的就是每次您的应用程序读取一定量的 KB 或 MB 时重新加载缓存...而不是您可以启动 asyncTask 来加载它,并且一旦主线程完成就会查找更多数据如果存在的话。这应该会加快很多,因为您将只在内存中进行搜索。

  5. 您将需要一个应用程序,或者编写自己的应用程序,这应该不会太困难,您可以使用处理程序,并在数组或列表中加载尽可能多的内容,计算字节数,然后在其他内存类型上重复它(内部 SD 卡和外部 SDCard)。