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

时间:2012-10-24 01:48:49

标签: android inputstream smartphone seek persistent-storage

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

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

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

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

2 个答案:

答案 0 :(得分:2)

尝试回答你的问题

  1. 只有一个区别,就是你的文件进入应用程序包(在app中),因为你需要使用不同的方法打开它,但是如果它在app包内并进入包/文件/ 比你可以使用相同的文件文件... ..

  2. 智能手机内存比HDD快,但如果将其存储在外部SD卡中,由于SD卡具有最大的读写速度,因此会发生变化。

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

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

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

答案 1 :(得分:1)

你的问题太具体了,要求提供太多数据:-) 我认为很难找到另一个有你特殊要求的人。

一般来说,SD卡数据访问速度不仅取决于驱动程序硬件(设备),还取决于卡本身和要访问的软件(Android版本)。

另一方面,您可以在以下位置找到有关SD卡速度的一些信息:

即使在Google Play上,您也可以找到一些应用来测试设备上SD卡的速度(搜索SD卡测试仪,SD工具等)