source: doc/theses/andrew_beach_MMath/code/ThrowEmpty.java @ cc0aa8c

Last change on this file since cc0aa8c was f79ee0d, checked in by Peter A. Buhr <pabuhr@…>, 3 years ago

update exception benchmarks

  • Property mode set to 100644
File size: 952 bytes
Line 
1// Throw Across Empty Function
2
3class EmptyException extends Exception {}
4
5public class ThrowEmpty {
6        static void unwind_empty(int frames) throws EmptyException {
7                if (0 < frames) {
8                        unwind_empty(frames - 1);
9                } else {
10                        throw new EmptyException();
11                }
12        }
13
14        private static long loop(int times, int total_frames) {
15                long startTime = System.nanoTime();
16                for (int count = 0 ; count < times ; ++count) {
17                        try {
18                                unwind_empty(total_frames);
19                        } catch (EmptyException e) {
20                                // ...
21                        }
22                }
23                long endTime = System.nanoTime();
24                return endTime - startTime;
25        }
26
27        public static void main(String[] args) {
28                int times = 1;
29                int total_frames = 1;
30                if (0 < args.length) {
31                        times = Integer.parseInt(args[0]);
32                }
33                if (1 < args.length) {
34                        total_frames = Integer.parseInt(args[1]);
35                }
36
37                // Warm-Up:
38                loop(1000, total_frames);
39
40                long time = loop(times, total_frames);
41                System.out.format("Run-Time (s): %.1f%n", time / 1_000_000_000.);
42        }
43}
Note: See TracBrowser for help on using the repository browser.