私の脳は今日は機能していないかもしれませんが、メソッドの実行時間を計算し、その時間をファイルに書き込もうとしています。なんらかの理由で、長い値は0と1として書かれています。ここに関連するコードは次のとおりです。ここでなぜこれらのロングは0か1として書かれていますか?
public static void main(String[] args) {
//Reads numbers from file
Scanner numberReader;
//Writes execution times to file
BufferedWriter writer;
String heading = "Euclid (ms)\t\tPrime Factor (ms)\n";
//Hold numbers from file
int num1, num2;
//Holds execution times
long startTime, endTime, elapsedTime;
try {
//Reads file
numberReader = new Scanner(new File(args[0]));
//Opens the file to write to
writer = new BufferedWriter(new FileWriter("comparison.txt", false));
writer.write(heading);
//While there are more numbers to read
while(numberReader.hasNextInt()) {
//Read the numbers
num1 = numberReader.nextInt();
num2 = numberReader.nextInt();
System.out.println("Numbers: " + num1 + ", " + num2);
//Run the first method and calculate execution time
startTime = System.currentTimeMillis();
System.out.println("Euclid GCD: " + euclid(num1, num2));
endTime = System.currentTimeMillis();
elapsedTime = endTime - startTime;
//Write execution time to file
writer.write(elapsedTime + "\n");
//Run the second method and calculate execution time
startTime = System.currentTimeMillis();
System.out.println("Prime Factor GCD: " + primeFactor(num1, num2));
endTime = System.currentTimeMillis();
elapsedTime = endTime - startTime;
//Write execution time to file
writer.write(elapsedTime + "\n");
}
//Close the reader and writer
numberReader.close();
writer.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
は、サンプル出力です:
Euclid (ms) Prime Factor (ms)
1
1
0
0
0
0
任意のアイデア?
あなたの 'euclid'メソッドに問題があるようです。それを投稿に追加できますか? –
jmhはこの種のものにとって有用なツールであり、正確なタイミングの作業の大部分を行います。 http://openjdk.java.net/projects/code-tools/jmh/ – pvg
申し訳ありませんが、印刷された書式は確定していません。私はそれを言及すべきだった。ユークリッドアルゴリズムは問題ありません。 – Pareod