Procházet zdrojové kódy

viewer improvements.

avkonst před 11 roky
rodič
revize
0c7e59cea3

+ 66 - 4
mainline/ext/std/tools/view.py

@@ -101,7 +101,7 @@ def export_to_str(out_format, paths, loader, loader_prev, nest_regions, dist_col
                 "subfiles": subfiles}
 
         if out_format == 'txt':
-            cout_txt(data)
+            cout_txt(data, loader)
         elif out_format == 'xml':
             result += mpp.utils.serialize_to_xml(data, root_name = "data") + "\n"
         elif out_format == 'python':
@@ -224,11 +224,16 @@ def compress_dist(data, columns):
             distr = metric_data['distribution-bars']
             columns = float(columns) # to trigger floating calculations
             
+            if metric_data['count'] == 0:
+                continue
             
             new_dist = []
             remaining_count = metric_data['count']
             next_consume = None
             next_bar = None
+            max_count = 0
+            min_count = 0xFFFFFFFF
+            sum_ratio = 0
             for (ind, bar) in enumerate(distr):
                 if next_bar == None:
                     # start new bar
@@ -264,10 +269,64 @@ def compress_dist(data, columns):
                     del next_bar['metric_s']
                     del next_bar['metric_f']
                     new_dist.append(next_bar)
+                    sum_ratio += next_bar['ratio']
+                    if max_count < next_bar['count']:
+                        max_count = next_bar['count']
+                    if min_count > next_bar['count'] and next_bar['count'] != 0:
+                        min_count = next_bar['count']
                     remaining_count -= next_bar['count']
                     next_bar = None
                     # check that consumed all
                     assert((ind + 1) != len(distr) or remaining_count == 0)
+
+            if (float(max_count - min_count) / metric_data['count'] < 0.05 and
+                metric_data['count'] > 1 and
+                len(new_dist) > 1):
+                # trick here: if all bars are even in the new distribution
+                # it is better to do linear compression instead
+                new_dist = []
+                step = int(round(float(metric_data['max'] - metric_data['min']) / columns))
+                next_end_limit = metric_data['min']
+                next_bar = None
+                for (ind, bar) in enumerate(distr):
+                    if next_bar == None:
+                        # start new bar
+                        next_bar = {'count': bar['count'],
+                                    'ratio': bar['ratio'],
+                                    'metric_s': next_end_limit,
+                                    'metric_f': bar['metric']}
+                        if '__diff__' in bar.keys():
+                            next_bar['__diff__'] = bar['__diff__']
+                        next_end_limit += step
+                    else:
+                        # merge to existing bar
+                        next_bar['count'] += bar['count']
+                        next_bar['ratio'] += bar['ratio']
+                        next_bar['metric_f'] = bar['metric']
+                        if '__diff__' in bar.keys():
+                            next_bar['__diff__'] += bar['__diff__']
+                    
+                    if (next_bar['metric_f'] >= next_end_limit # consumed enough
+                        or (ind + 1) == len(distr)): # or the last bar
+                        if (ind + 1) != len(distr):
+                            next_bar['metric_f'] = next_end_limit
+                        # append to new distribution
+                        if isinstance(next_bar['metric_s'], float):
+                            next_bar['metric_s'] = "{0:.4f}".format(next_bar['metric_s'])
+                            next_bar['metric_f'] = "{0:.4f}".format(next_bar['metric_f'])
+                        else:
+                            next_bar['metric_s'] = str(next_bar['metric_s'])
+                            next_bar['metric_f'] = str(next_bar['metric_f'])
+                        next_bar['metric'] = next_bar['metric_s'] + "-" + next_bar['metric_f']
+                        del next_bar['metric_s']
+                        del next_bar['metric_f']
+                        new_dist.append(next_bar)
+                        next_bar = None
+
+            if sum_ratio < 0.995:
+                factor = 1.0 / sum_ratio
+                for each in new_dist:
+                    each['ratio'] *= factor
             data[namespace][field]['distribution-bars'] = new_dist
     return data
 
@@ -299,7 +358,7 @@ def cout_txt_regions(path, regions, indent = 0):
         if 'subregions' in region.keys():
             cout_txt_regions(path, region['subregions'], indent=indent+1)
 
-def cout_txt(data):
+def cout_txt(data, loader):
     
     details = []
     for key in data['file-data'].keys():
@@ -347,8 +406,11 @@ def cout_txt(data):
             if 'count' in diff_data.keys():
                 diff_str = ' [{0:{1}}]'.format(diff_data['count'], '+' if diff_data['count'] >= 0 else '')
             count_str_len  = len(str(measured))
-            details.append(('Distribution', str(measured) + diff_str + ' files/regions measured'))
-            details.append(('  Metric value', 'Ratio : R-sum : Number of files/regions'))
+            elem_name = 'regions'
+            if loader.get_namespace(namespace).are_regions_supported() == False:
+                elem_name = 'files'
+            details.append(('Distribution', str(measured) + diff_str + ' ' + elem_name + ' measured'))
+            details.append(('  Metric value', 'Ratio : R-sum : Number of ' + elem_name))
             sum_ratio = 0
             for bar in data['aggregated-data'][namespace][field]['distribution-bars']:
                 sum_ratio += bar['ratio']

+ 6 - 6
mainline/tests/general/test_basic/test_std_general_metrics_view_nest_per_file_stdout.gold.txt

@@ -55,16 +55,16 @@
 	Minimum        : None
 	Maximum        : None
 	Total          : 0.0
-	Distribution   : 0 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 0 files measured
+	  Metric value : Ratio : R-sum : Number of files
 
 ./simple.cpp:: info: Overall metrics for 'std.general:proctime' metric
 	Average        : 0.01
 	Minimum        : 0.01
 	Maximum        : 0.01
 	Total          : 0.01
-	Distribution   : 1 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 1 files measured
+	  Metric value : Ratio : R-sum : Number of files
 	        0.0100 : 1.000 : 1.000 : 1	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 ./simple.cpp:: info: Overall metrics for 'std.general:size' metric
@@ -72,8 +72,8 @@
 	Minimum        : 487
 	Maximum        : 487
 	Total          : 487.0
-	Distribution   : 1 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 1 files measured
+	  Metric value : Ratio : R-sum : Number of files
 	           487 : 1.000 : 1.000 : 1	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 

+ 6 - 6
mainline/tests/general/test_basic/test_std_general_metrics_view_txt_stdout.gold.txt

@@ -3,16 +3,16 @@
 	Minimum        : None
 	Maximum        : None
 	Total          : 0.0
-	Distribution   : 0 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 0 files measured
+	  Metric value : Ratio : R-sum : Number of files
 
 :: info: Overall metrics for 'std.general:proctime' metric
 	Average        : 0.01
 	Minimum        : 0.01
 	Maximum        : 0.01
 	Total          : 0.01
-	Distribution   : 1 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 1 files measured
+	  Metric value : Ratio : R-sum : Number of files
 	        0.0100 : 1.000 : 1.000 : 1	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 :: info: Overall metrics for 'std.general:size' metric
@@ -20,8 +20,8 @@
 	Minimum        : 487
 	Maximum        : 487
 	Total          : 487.0
-	Distribution   : 1 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 1 files measured
+	  Metric value : Ratio : R-sum : Number of files
 	           487 : 1.000 : 1.000 : 1	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 :: info: Directory content:

+ 8 - 8
mainline/tests/general/test_basic/test_std_lines_metrics_view_nest_per_file_stdout.gold.txt

@@ -83,8 +83,8 @@
 	Minimum        : 0
 	Maximum        : 12
 	Total          : 44.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.125 : 0.125 : 1	|||||||||||||
 	             3 : 0.125 : 0.250 : 1	|||||||||||||
 	             4 : 0.125 : 0.375 : 1	|||||||||||||
@@ -98,8 +98,8 @@
 	Minimum        : 0
 	Maximum        : 11
 	Total          : 41.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.125 : 0.125 : 1	|||||||||||||
 	             3 : 0.125 : 0.250 : 1	|||||||||||||
 	             4 : 0.250 : 0.500 : 2	|||||||||||||||||||||||||
@@ -112,8 +112,8 @@
 	Minimum        : 0
 	Maximum        : 0
 	Total          : 0.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 1.000 : 1.000 : 8	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 ./simple.cpp:: info: Overall metrics for 'std.code.lines:comments' metric
@@ -121,8 +121,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 4.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.625 : 0.625 : 5	|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.250 : 0.875 : 2	|||||||||||||||||||||||||
 	             2 : 0.125 : 1.000 : 1	|||||||||||||

+ 8 - 8
mainline/tests/general/test_basic/test_std_lines_metrics_view_txt_stdout.gold.txt

@@ -3,8 +3,8 @@
 	Minimum        : 0
 	Maximum        : 12
 	Total          : 44.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.125 : 0.125 : 1	|||||||||||||
 	             3 : 0.125 : 0.250 : 1	|||||||||||||
 	             4 : 0.125 : 0.375 : 1	|||||||||||||
@@ -18,8 +18,8 @@
 	Minimum        : 0
 	Maximum        : 11
 	Total          : 41.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.125 : 0.125 : 1	|||||||||||||
 	             3 : 0.125 : 0.250 : 1	|||||||||||||
 	             4 : 0.250 : 0.500 : 2	|||||||||||||||||||||||||
@@ -32,8 +32,8 @@
 	Minimum        : 0
 	Maximum        : 0
 	Total          : 0.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 1.000 : 1.000 : 8	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 :: info: Overall metrics for 'std.code.lines:comments' metric
@@ -41,8 +41,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 4.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.625 : 0.625 : 5	|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.250 : 0.875 : 2	|||||||||||||||||||||||||
 	             2 : 0.125 : 1.000 : 1	|||||||||||||

+ 2 - 2
mainline/tests/general/test_basic/test_view_format_view_txt_stdout.gold.txt

@@ -3,8 +3,8 @@
 	Minimum        : 1
 	Maximum        : 3
 	Total          : 6.0
-	Distribution   : 4 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 4 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             1 : 0.750 : 0.750 : 3	|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             3 : 0.250 : 1.000 : 1	|||||||||||||||||||||||||
 

+ 10 - 10
mainline/tests/general/test_std_code_cpp/test_parser_view_files_stdout.gold.txt

@@ -42,8 +42,8 @@
 	Minimum        : 0
 	Maximum        : 0
 	Total          : 0.0
-	Distribution   : 3 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 3 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 1.000 : 1.000 : 3	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 ./operator_test.hpp:0: info: Metrics per '__global__' region
@@ -426,8 +426,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 4.0
-	Distribution   : 51 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 51 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.941 : 0.941 : 48	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.039 : 0.980 :  2	||||
 	             2 : 0.020 : 1.000 :  1	||
@@ -647,8 +647,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 6.0
-	Distribution   : 24 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 24 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.833 : 0.833 : 20	|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.083 : 0.917 :  2	||||||||
 	             2 : 0.083 : 1.000 :  2	||||||||
@@ -704,8 +704,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 3.0
-	Distribution   : 4 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 4 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.500 : 0.500 : 2	||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.250 : 0.750 : 1	|||||||||||||||||||||||||
 	             2 : 0.250 : 1.000 : 1	|||||||||||||||||||||||||
@@ -773,8 +773,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 4.0
-	Distribution   : 4 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 4 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.250 : 0.250 : 1	|||||||||||||||||||||||||
 	             1 : 0.500 : 0.750 : 2	||||||||||||||||||||||||||||||||||||||||||||||||||
 	             2 : 0.250 : 1.000 : 1	|||||||||||||||||||||||||

+ 6 - 6
mainline/tests/general/test_std_code_cs/test_parser_view_files_stdout.gold.txt

@@ -160,8 +160,8 @@
 	Minimum        : 0
 	Maximum        : 6
 	Total          : 39.0
-	Distribution   : 19 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 19 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.316 : 0.316 :  6	||||||||||||||||||||||||||||||||
 	             1 : 0.263 : 0.579 :  5	||||||||||||||||||||||||||
 	             2 : 0.053 : 0.632 :  1	|||||
@@ -273,8 +273,8 @@
 	Minimum        : 0
 	Maximum        : 1
 	Total          : 1.0
-	Distribution   : 8 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 8 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.875 : 0.875 : 7	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.125 : 1.000 : 1	|||||||||||||
 
@@ -397,8 +397,8 @@
 	Minimum        : 0
 	Maximum        : 4
 	Total          : 5.0
-	Distribution   : 12 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 12 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.833 : 0.833 : 10	|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.083 : 0.917 :  1	||||||||
 	             4 : 0.083 : 1.000 :  1	||||||||

+ 8 - 8
mainline/tests/general/test_std_code_java/test_parser_view_files_stdout.gold.txt

@@ -322,8 +322,8 @@
 	Minimum        : 0
 	Maximum        : 6
 	Total          : 83.0
-	Distribution   : 43 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 43 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.186 : 0.186 :  8	|||||||||||||||||||
 	             1 : 0.326 : 0.512 : 14	|||||||||||||||||||||||||||||||||
 	             2 : 0.209 : 0.721 :  9	|||||||||||||||||||||
@@ -354,8 +354,8 @@
 	Minimum        : 0
 	Maximum        : 0
 	Total          : 0.0
-	Distribution   : 1 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 1 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 1.000 : 1.000 : 1	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
 ./BinaryHeapPriorityQueue.java:0: info: Metrics per '__global__' region
@@ -689,8 +689,8 @@
 	Minimum        : 0
 	Maximum        : 6
 	Total          : 37.0
-	Distribution   : 44 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 44 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.523 : 0.523 : 23	||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.295 : 0.818 : 13	||||||||||||||||||||||||||||||
 	             2 : 0.114 : 0.932 :  5	|||||||||||
@@ -938,8 +938,8 @@
 	Minimum        : 0
 	Maximum        : 2
 	Total          : 6.0
-	Distribution   : 31 files/regions measured
-	  Metric value : Ratio : R-sum : Number of files/regions
+	Distribution   : 31 regions measured
+	  Metric value : Ratio : R-sum : Number of regions
 	             0 : 0.839 : 0.839 : 26	||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 	             1 : 0.129 : 0.968 :  4	|||||||||||||
 	             2 : 0.032 : 1.000 :  1	|||