Try-Catch 比 Try-with-Resources 更贵还是更便宜问题测试示例
2022-09-02 02:41:53
问题
我最近刚开始回到Java,从来没有机会使用。从表面上看,它看起来很棒,因为它可以减少代码,但是在引擎盖下,它的操作比传统的操作更昂贵还是更便宜?我知道已经是一个昂贵的手术,因此我的好奇心。try-with-resources
try-catch
try-catch
我对这两种类型进行了简单的测试,并没有注意到太大的差异:
测试示例
资源试用测试
long startTime = System.currentTimeMillis();
ArrayList<String> list = null;
try (Scanner sc = new Scanner(new File("file.txt"))) {
list = new ArrayList();
while (sc.hasNext()) {
list.add(sc.next());
}
} catch (Exception ex) {
System.err.println("Error: " + ex.getMessage());
} finally {
long endTime = System.currentTimeMillis();
System.out.println("The program completed in " + (endTime - startTime) + " ms");
}
传统试模测试
long startTime = System.currentTimeMillis();
ArrayList<String> list = null;
Scanner sc = null;
try {
sc = new Scanner(new File("file.txt"));
list = new ArrayList();
while (sc.hasNext()) {
list.add(sc.next());
}
} catch (Exception ex) {
System.err.println("Error: " + ex.getMessage());
} finally {
sc.close();
long endTime = System.currentTimeMillis();
System.out.println("The program completed in " + (endTime - startTime) + " ms");
}
结果
两者都导致了15-16ms的时间 - 根本没有真正明显的差异。但不可否认,这是一个非常小的测试示例。
我再次问:引擎盖下比传统更便宜还是更便宜?try-with-resources
try-catch