JAva投げ異常と直接戻り比較

1342 ワード

異常を使ってコードをはっきりさせることができますが、投げ異常と戻り状態コードの性能の差はどのくらいですか.
暇があったら何もしないで、テストをします.
テストコードを先に
1投異常

	static void f2() {
		throw new RuntimeException("1");
	}

	public static void main(String[] args) {
		long a = System.nanoTime();
		for (int i = 0; i < 10000000; i++) {
			try {
				f2();
			} catch (Exception e) {
				String s=e.getMessage();
			}
		}
		long b = System.nanoTime();
		System.out.println(b-a);
	}

2直接戻る

	static String f1() {
		return "1";
	}

	public static void main(String[] args) {
		long a = System.nanoTime();
		for (int i = 0; i < 10000000; i++) {
			String s=f1();
		}
		long b = System.nanoTime();
		System.out.println(b-a);
	}

結果をそれぞれ10回実行
ダイレクトリターン
異常放出
10971157
10890656983
9833024
10809811373
12002224
10813899951
15228402
10740746030
65847475
10736142652
9674623
10735044607
8212356
11051365537
10112668
10746780876
9975290
10764845322
11647779
10846855466
最大最小消費時間の合計をそれぞれ除去する
ダイレクトリターン
異常放出
投げ異常/直接戻る
89445167
86349738653
965.3930061