Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 智能手机上的文件读取性能:内部存储vs.SD卡vs.PC硬盘_Android_Inputstream_Smartphone_Seek_Persistent Storage - Fatal编程技术网

Android 智能手机上的文件读取性能:内部存储vs.SD卡vs.PC硬盘

Android 智能手机上的文件读取性能:内部存储vs.SD卡vs.PC硬盘,android,inputstream,smartphone,seek,persistent-storage,Android,Inputstream,Smartphone,Seek,Persistent Storage,我的Android应用程序将使用大文件和非常大的文件(即大小介于10MB和2GB之间) 我一直想知道智能手机使用什么硬件来实现稳定的存储,软件(文件读取/查找)的考虑是否与PC硬盘类似。我试图找到有关硬件的信息,并对其有一些了解(内部存储、SD卡),但我检查的所有来源都不够全面和/或具体。我的(相关)问题是: 在“现代”智能手机(例如安卓2.2.手机)上阅读大文件时,与在PC上使用Java应用程序阅读大文件相比,我必须考虑的主要区别是什么?(就磁盘查找/读取性能而言;显然,手机RAM比PC机小,

我的Android应用程序将使用大文件和非常大的文件(即大小介于10MB和2GB之间)

我一直想知道智能手机使用什么硬件来实现稳定的存储,软件(文件读取/查找)的考虑是否与PC硬盘类似。我试图找到有关硬件的信息,并对其有一些了解(内部存储、SD卡),但我检查的所有来源都不够全面和/或具体。我的(相关)问题是:

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


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

    您的问题太具体,要求的数据太多:-) 我想很难找到另一个对你有非常具体要求的人

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

    另一方面,您可以在以下内容中找到有关SD卡速度的信息:


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

    尝试回答您的问题

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

  • 智能手机的内部存储器比硬盘快,但如果将其存储在外部SD卡中,这将发生变化,因为SD卡具有最高的读写速度

  • 是的,有区别。。。如果从内部或SD卡(而不是外部SD卡)读取数据,则其他设备的存储容量不应为1或2GB和16Gb。主内存中的所有内容都会运行得更快

  • 查找总是一项缓慢的任务,您可以在获得所有需要的日期后关闭流,即使您尚未到达文件的结尾。你能做的就是在每次你的应用程序读取了一定数量的KBs或MBs时重新加载缓存。。。这样,您就可以使用asyncTask来加载它,一旦主线程完成,就会查找更多数据(如果存在)。这应该会加快很多,因为您将只在内存中搜索

  • 您需要一个应用程序来实现这一点,或者编写自己的应用程序,这应该不会太难,您可以使用handler,在数组或列表中加载尽可能多的内容,计算字节数,并在其他内存类型(内部SD卡和外部SD卡)上重复


  • 典型的数据读取速度是多少?
    由于与处理器和芯片组绑定,每个系统/设备的数据读取速度各不相同。在这种情况下,现代智能手机可能比赛扬处理器计算机更快,正如克劳斯·维拉卡在回答中所说的“寻找总是一项缓慢的任务”,我不得不表示不同意。这通常不是真的;e、 根据我所听到的,在SD卡上,它甚至可能比在硬盘上更快(由于SD卡硬件的性质)。也就是说,选择一个随机位置可能比在电脑硬盘上更快。谢谢你的回答。关于问题#4:事实上,这是我最重要的问题,我的意思是从一个不同的方面,而不是你如何处理它。(我的软件组件运行在一个单独的线程中,所以响应性对我来说不是问题。)我实际上想知道“seek”是否和PC硬盘一样高效。换句话说,阅读2MB并不是什么大问题,所以问题是,是否有人在寻找它