此程序在我的设备上以0.099秒运行。我想在不到0.01秒的时间内运行它。如何实现这一目标。它可能与读写流有关。这个程序基本上接受一个字符串,并在方法calc中逐个对字符串的字符执行一些操作,并返回一些int值。你真的不需要理解代码。如果有任何优化必须在i / o流或方法内部进行。我无法想到需要进行此优化的任何其他地方。
import java.io.*;
import java.util.*;
class ride{
static int calc(String s){
char[] d=new char[s.length()];
s.getChars(0,s.length(),d,0);
int sum=1;
for(char c:d){
sum*=(c-'A'+1);
}
return sum%47;
}
public static void main(String args[]){
try{
BufferedReader br=new BufferedReader(new FileReader("ride.in"));
FileWriter fw=new FileWriter("ride.out");
String s;
while((s=br.readLine())!=null){
if(calc(s)==calc(br.readLine())){
fw.write("GO\n");
}
else
fw.write("STAY\n");
}
fw.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
答案 0 :(得分:0)
给bufferReader一个更大的缓冲区大小,可能是80k或更多,取决于你的ram:
BufferedReader br=new BufferedReader(new FileReader("ride.in"), 81920);
答案 1 :(得分:0)
由于您使用的是BufferedReader实例,因此缺少性能可能不是由于I / O(即使在读取多个char时,也只会对底层操作系统进行少量系统调用)。当然,这取决于文件长度。
为了获得更好的表现,请尝试开始使用calc函数。例如,您可以避免两次计算长度。