[英]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.