我做了一个简单的二元模式匹配函数。然而,GC变得疯狂,我的代码需要一段时间来处理一个小的4Mb文件(超过一分钟)。我用python进行了测试,它在不到5秒的时间内处理同一个文件。 这是代码:
public void searchPattern(byte[] pattern){
try {
// file is a RandomAccesFile
file.seek(0);
long i = 0;
byte[] buff = new byte[pattern.length];
long start = System.currentTimeMillis();
while(i < file.length()-pattern.length){
file.seek(i);
file.read(buff);
if(Arrays.equals(pattern,buff)){
Log.d("BinaryFile","Match found --> " + Long.toHexString(i));
}
i += 1;
}
Log.d("BinaryFile","Analysis finished in " + (System.currentTimeMillis() - start) / 1000 + "s");
} catch(IOException e){
e.printStackTrace();
}
}
文件是一个randomaccessfile,有什么想法吗?提前谢谢