减少执行时间在循环
我有一个这样的代码:减少执行时间在循环
RandomAccessFile raf = new RandomAccessFile(new File("C:\\Users\\AhmadMaleki\\IdeaProjects\\Hello world\\src\\kish\\file1"), "r");
for (int i = 1 ; i < 1025 ; i++)
{
for (int j = 0; j < raf.length() - 4 ; j++)
{
raf.seek(j);
byte[] b = new byte[5];
raf.read(b);
if (new String (b).equals(wordcount[i]))
{
z[i]++;
}
}
}
在该代码raf.length()= 26841039和执行时间为4100分钟。 是否有减少运行时间的解决方案?(例如多线程,并行,....)
对于开始切换循环,以便不读取同一文件1024次。
for (int j = 0; j < raf.length() - 4 ; j++){
for (int i = 1 ; i < 1025 ; i++){
// Do your things here ...
}
}
然后明智地选择您的输入流。
完全不需要这个循环......只需要做我在评论中写的东西:把这些单词放在一个集合中,并像下面这样检查它:'if(words.contains(new String(b ))z [i] ++' – paranoidAndroid
如果你删除了内部循环,就没有'i',通过使用'Map
为什么你需要'我'?他只是想检查词是否包含在字典中,所以我认为'HashSet'应该足够了,不是吗?我得到的循环的全部点只是检查字典中的所有单词 – paranoidAndroid
欢迎来到Stack Overflow。这个网站实际上应该是代码不起作用。你想要[代码评论](https://codereview.stackexchange.com/)。 – Michael
这很可能是可以优化的。作为一个例子,我真的怀疑你需要读取1024次的文件。相反,您可能需要一次扫描一遍,构建一些结构来保存数据并对其进行操作。 – Thomas
继续我怀疑你需要使用RandomAccessFile。连续阅读的速度更快。 –