"""Statistics gathering for the distcc-pump include server."""
__author__ = "Nils Klarlund"
import time
resolve_expr_counter = 0 master_hit_counter = 0 master_miss_counter = 0 resolve_counter = 0 search_counter = 0 build_stat_counter = 0 sys_stat_counter = 0 translation_unit_counter = 0
start_time = None
translation_unit_time = None
min_time = float('Inf')
max_time = 0.0
total_time = 0.0
parse_file_total_time = 0.0
parse_file_counter = 0
parse_file_counter_last = 0
quote_path_total = 0 angle_path_total = 0
len_calculated_closure = 0 len_calculated_closure_nonsys = 0 len_exact_closure = 0 len_surplus_nonsys = 0
find_node_counter = 0
def StartTiming():
global start_time, translation_unit_counter
"""Mark the start of a request to find an include closure."""
translation_unit_counter += 1
start_time = time.clock()
def EndTiming():
"""Mark the end of an include closure calculation."""
global translation_unit_time, min_time, max_time, total_time
translation_unit_time = time.clock() - start_time
min_time = min(translation_unit_time, min_time)
max_time = max(translation_unit_time, max_time)
total_time += translation_unit_time
def PrintStatistics(include_analyzer):
if translation_unit_counter == 0: return
print "TRANSLATION_UNIT: %s" % include_analyzer.translation_unit
print (("TIME: last %-2.3fs, min %-2.3fs, "
"max %-2.3fs, average %-2.3fs, #: %5d, total: %5.1fs") %
(translation_unit_time, min_time, max_time,
total_time/translation_unit_counter,
translation_unit_counter, total_time))
print ("PARSING: total %-5.3fs, total count: %4d, new files: %-5d" %
(parse_file_total_time, parse_file_counter,
parse_file_counter - parse_file_counter_last))
print "COUNTER: resolve_expr_counter: %8d" % resolve_expr_counter
print "COUNTER: master_hit_counter: %8d" % master_hit_counter
print "COUNTER: master_miss_counter: %8d" % master_miss_counter
print "SIZE: master_cache %8d" % (
len(include_analyzer.master_cache))
print "COUNTER: sys_stat_counter: %10d" % sys_stat_counter
print "COUNTER: build_stat_counter: %10d" % build_stat_counter
if resolve_counter != 0:
print "COUNTER: search_counter (average): %4.1f" % (
float(search_counter)/resolve_counter)
print "SIZE: include_dir_pairs: %8d" % (
len(include_analyzer.include_dir_pairs))
if 'quote_dirs' in include_analyzer.__dict__:
print "SIZE: quote_path %8d" % (
len(include_analyzer.quote_dirs))
if 'angle_dirs' in include_analyzer.__dict__:
print "SIZE: angle_path %8d" % (
len(include_analyzer.angle_dirs))
print "SIZE: quote_path (average) %4.1f" % (
float(quote_path_total)/translation_unit_counter)
print "SIZE: angle_path (average) %4.1f" % (
float(angle_path_total)/translation_unit_counter)
print "SIZE: quote_dirs_set %8d" % (
len(include_analyzer.quote_dirs_set))
print "SIZE: angle_dirs_set: %8d" % (
len(include_analyzer.angle_dirs_set))
print
print "SIZE: calculated_closure: %8d" % len_calculated_closure
print "SIZE: calculated_closure_nonsys: %8d" % (
len_calculated_closure_nonsys)
print "SIZE: exact_closure %8d" % len_exact_closure
print "SIZE: surplus_nonsys %8d" % len_surplus_nonsys
print