1
1
#!/usr/bin/env python3
2
2
3
+ import argparse
3
4
import re
5
+ import sys
4
6
from itertools import chain
5
7
from typing import Iterable , List
6
8
7
- from analyze import Block
9
+ import analyze
10
+ from analyze import Block , ioutils , utils
8
11
9
12
'''
10
13
Function-level stats (not Block, Logs, or Benchmark level)
@@ -25,3 +28,26 @@ def function_occupancy_info(logs: Iterable[Block]) -> List[int]:
25
28
def avg_occupancy (logs : Iterable [Block ]) -> float :
26
29
occ_info = function_occupancy_info (logs )
27
30
return sum (occ_info ) / len (occ_info ) if occ_info else 0.0
31
+
32
+
33
+ def raw_main (argv : List [str ] = []):
34
+ parser = argparse .ArgumentParser (
35
+ description = 'Computes the block stats for the logs' )
36
+ parser .add_argument ('--stat' , required = True , choices = ('occ' ,),
37
+ help = 'Which stat to compute' )
38
+ parser .add_argument ('logs' , help = 'The logs to analyze' )
39
+ ioutils .add_output_format_arg (parser )
40
+ args = analyze .parse_args (parser , 'logs' )
41
+
42
+ STATS = {
43
+ 'occ' : ('Average Occupancy' , avg_occupancy ),
44
+ }
45
+ label , f = STATS [args .stat ]
46
+
47
+ results = utils .foreach_bench (lambda bench : {label : f (bench )}, args .logs )
48
+
49
+ args .format (sys .stdout , results )
50
+
51
+
52
+ if __name__ == '__main__' :
53
+ raw_main (sys .argv )
0 commit comments