2011-04-06 119 views
0

我想知道读取存储在Android SD卡上的大文件(50MB到100MB)花费多少时间的想法(大概)。我在Google Nexus One的Android 2.3.3上使用以下代码。这会给我一个合理的估计吗?是否有我应该使用的标准方法?另外,将使用本地代码提高我的文件I/O性能?估算在Android上从SD卡读取大文件的时间

谢谢。

public void readFileFromSDCard() throws IOException 
{ 
    long start = System.currentTimeMillis(); 
    long size = 0; 
    File file = new File(OVERLAY_PATH_BASE + "base-ubuntu.vdi"); 
    try { 

     InputStream in = new FileInputStream(file); 
     try { 
      byte[] tmp = new byte[4096]; 
      int l; 
      while ((l = in.read(tmp)) != -1) { 
       size = size + 4096; 
      } 
     } finally { 
      in.close(); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    long end = System.currentTimeMillis(); 
    Log.e(LOG_TAG, 
      "Reading file " + file.getAbsolutePath() + " with " + size + "bytes took " + (end-start) + " ms."); 

} 

回答

1

这段代码最简单的做法是每次while循环迭代需要多长时间,然后用它来估计剩下的时间。例如,如果您在一秒内在一次迭代中处理0.1Mb,并且总共需要1Mb,则可以猜测您有大约9秒钟的时间。

不同手机之间的SD卡性能差异很大,即使在同一部手机上,速度也可能无法预测(例如,我的手机会因为小文件而产生大量随机延迟)。我认为不值得做比上述更复杂的任何事情,比如在处理文件之前对手机进行基准测试。百分比对大多数用途来说可能就足够了。