2011-04-06 120 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卡性能差異很大,即使在同一部手機上,速度也可能無法預測(例如,我的手機會因爲小文件而產生大量隨機延遲)。我認爲不值得做比上述更復雜的任何事情,比如在處理文件之前對手機進行基準測試。百分比對大多數用途來說可能就足夠了。