从DataInputStream读取浮点数在android上真的很慢

时间:2017-06-16 18:57:45

标签: java android file datainputstream

我正在尝试在我的Android(Sony Experia Z3)上阅读一个体积适中的文件,它需要的时间比我希望的要长得多。我有以下代码:

DataInputStream dataIn = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
float[] values = new float[dataIn.available() / 4];

logInfo("Started");
long start = System.currentTimeMillis();
int i = 0;
while(dataIn.available() > 0) {
    values[i++] = dataIn.readFloat();
}
double elapsed = (System.currentTimeMillis() - start) / 1000.0;
logInfo("elapsed time in seconds: " + elapsed + " floats read: " + values.length);

输出:

Started
elapsed time in seconds: 52.594 floats read: 3421669

该文件为17,1 MB,真的需要一分钟才能阅读?有没有办法改善表现?

修改

正如我发布的那样,我试图避免使用dataIn.available,突然间它只用了4秒。改变:

while(dataIn.available() > 0) {

要:

while(i < values.length) {

新结果:

elapsed time in seconds: 3.842 floats read: 3421669

0 个答案:

没有答案