减少循环中的执行时间
reduce execution time in loop
我有这样的代码:
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 ...
}
}
然后明智地选择您的输入流。
我有这样的代码:
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 ...
}
}
然后明智地选择您的输入流。