Javaでメソッドの実行時間を計測するプログラムの書き方
この記事では、Javaプログラムにおけるメソッドや処理全体の実行時間(処理時間)を計測する方法について解説します。実行時間は、終了時刻から開始時刻を差し引くことで求められます。Javaでは、高精度な時間計測に対応した System.nanoTime() メソッドを使用するのが一般的です。
入力と出力の例
入力
プログラムを実行するとします。
Run the program
出力
期待される出力は以下のとおりです。
The program is being executed: The Execution time of the program is: 620872 nanoseconds
アルゴリズム
Step 1 - 開始 Step 2 - long型の変数 my_start_time、my_end_time、my_execution_time の3つを宣言する Step 3 - System.nanoTime() を呼び出してプログラムの開始時刻を取得し、my_start_time に代入する Step 4 - 同様に System.nanoTime() を呼び出してプログラムの終了時刻を取得し、my_end_time に代入する Step 5 - 実行時間を「my_end_time − my_start_time」として計算し、my_execution_time に格納する Step 6 - 結果を表示する Step 7 - 終了
例1:シンプルな計測
ここでは、処理の前後で時刻を取得し、その差分をコンソールに表示します。
public class Main {
public static void main(String[] args) {
long my_start_time, my_end_time, my_execution_time;
my_start_time = System.nanoTime();
System.out.println("The program is being executed:");
my_end_time = System.nanoTime();
my_execution_time = my_end_time - my_start_time;
System.out.println("The Execution time of the program is: " + my_execution_time + " nanoseconds");
}
}出力
The program is being executed: The Execution time of the program is: 129621 nanoseconds
例2:複数の処理を含む場合の計測
次の例では、整数値の定義や加算などの処理を含めた場合の実行時間を計測しています。
public class Main {
public static void main(String[] args) {
long my_start_time, my_end_time, my_execution_time;
my_start_time = System.nanoTime();
int my_input_1 = 100;
int my_input_2 = 250;
int my_sum = my_input_1 + my_input_2;
System.out.println("The program is being executed:");
my_end_time = System.nanoTime();
my_execution_time = my_end_time - my_start_time;
System.out.println("The Execution time of the program is: " + my_execution_time + " nanoseconds");
}
}出力
The program is being executed: The Execution time of the program is: 103801 nanoseconds
補足:System.nanoTime() と currentTimeMillis() の違い
時間計測には System.currentTimeMillis() を使う方法もありますが、こちらはミリ秒単位であり、OSによっては精度が粗い場合があります。ナノ秒単位の高精度な計測が必要な場合は、本記事のように System.nanoTime() を使用することを推奨します。ただし、nanoTime() の戻り値は絶対的な時刻ではなく経過時間の目安であるため、時刻の比較には使用しないよう注意してください。
-
Javaで台形の面積を求めるプログラムの作成方法を解説
この記事では、Javaを使って台形(トラペジウム)の面積を求める方法について詳しく解説します。台形とは、少なくとも1組の対辺が互いに平行になっている四角形のことです。平行な2つの辺は「底辺」と呼ばれ、平行でない残りの2つの辺は「脚」と呼ばれます。英語圏では trapezoid(トラペゾイド)と呼ばれることもあります。 台形の面積は、次の公式を使って計算できます。 面積 = (高さ ÷ 2) × (上底 + 下底) すなわち、 面積 = ½ × (平行な2辺の長さの合計) × (平行な2辺間の垂直距離) 以下に具体的なイメージを示します。平行な2辺の長さを a、b、台形の高さを h としたとき
-
【Java入門】長方形の周囲(外周)を求めるプログラムの作り方
長方形の周囲とは? この記事では、Javaを使って長方形の周囲(外周)を求める方法を解説します。長方形の周囲とは、長方形の4つの辺すべての長さを足し合わせた合計のことで、次の図のように「縦の辺2本」と「横の辺2本」の長さを合計したものに相当します。 長方形は向かい合う辺の長さが等しいという性質を持つため、周囲は次の式で計算できます。 周囲 = 2 ×(縦の長さ + 横の長さ) 入力と出力の例 たとえば、入力が次の値であるとします。 長方形の各辺の長さ:5, 8, 5, 8 このとき、期待される出力は次のとおりです。 Perimeter : 26 アルゴリズム 処理の流れは以下のようになりま