簡體   English   中英

估計在Android上從SD卡讀取大文件的時間

[英]Estimating the time to read a large file from SD Card on Android

我想了解一下讀取存儲在Android SD卡上的大文件(50MB至100MB)所花費的時間。 我在Google Nexus One的Android 2.3.3上使用以下代碼。 這能給我一個合理的估計嗎? 我應該使用一種標准方法嗎? 另外,使用本機代碼是否可以提高文件I / O性能?

謝謝。

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.");

}

此代碼最簡單的操作是計時每次while循環迭代需要花費多長時間,然后使用該時間來估計還剩下多長時間。 例如,如果您在一秒內進行一次迭代處理0.1Mb,而您總共需要處理1Mb,則您可能要花大約9秒鍾的時間。

SD卡的性能在不同的手機之間差異很大,並且即使在同一部手機上,其速度也無法預測(例如,對於小文件,我的手機會出現較大的隨機延遲)。 我認為沒有必要做比我自己更復雜的事情,例如在處理文件之前對手機進行基准測試。 對於大多數用途,百分比條可能就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM