source: doc/theses/andrew_beach_MMath/code/throw_finally.py@ d83b266

ADT ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since d83b266 was 63e3ed8, checked in by Andrew Beach <ajbeach@…>, 4 years ago

Added Python versions of the exception benchmarks.

  • Property mode set to 100755
File size: 777 bytes
Line 
1#!/usr/bin/env python3
2
3# Throw Across Finally
4
5from time import thread_time_ns
6
7
8class EmptyException(Exception):
9 pass
10
11
12def unwind_finally(frames):
13 if 0 < frames:
14 try:
15 unwind_finally(frames - 1)
16 finally:
17 pass
18 else:
19 raise EmptyException()
20
21
22def main(argv):
23 times = 1
24 total_frames = 1
25 if 1 < len(argv):
26 times = int(argv[1])
27 if 2 < len(argv):
28 total_frames = int(argv[2])
29
30 start_time = thread_time_ns()
31 for count in range(times):
32 try:
33 unwind_finally(total_frames)
34 except EmptyException:
35 pass
36
37 end_time = thread_time_ns()
38 print('Run-Time (ns):', end_time - start_time)
39
40
41if '__main__' == __name__:
42 import sys
43 main(sys.argv)
Note: See TracBrowser for help on using the repository browser.