def add_stat(self, name:str, data_format:str, stat:Statistics): row = [name] for p in Percentile: if p is Percentile.Avg: row.append(stat.get(p)) elif p is not Percentile.Min: row.append(stat.get(p, data_format)) self.add_row(row)
best_block = sys.argv[3] if len( sys.argv) >= 4 else find_best_block(logs_dir) print("Loading logs ...") agg = LogAggregator.load(logs_dir) parents = {} refs = {} generate_times = {} received_times_max = {} received_times_p99 = {} for block in agg.blocks.values(): parents[block.hash] = block.parent refs[block.hash] = block.referees generate_times[block.hash] = block.timestamp latencies_stat = Statistics(block.get_latencies(BlockLatencyType.Cons)) received_times_max[block.hash] = block.timestamp + latencies_stat.get( Percentile.Max) received_times_p99[block.hash] = block.timestamp + latencies_stat.get( Percentile.P99) #print("computing with broadcast latency (Max) ...") #latencies_max = compute_latency(parents, refs, best_block, generate_times, received_times_max, lambda_n) print("computing with broadcast latency (P99) ...") latencies_p99 = compute_latency(parents, refs, best_block, generate_times, received_times_p99, lambda_n) table = Table.new_matrix("confirmation latency") #table.add_data("Max", "%.2f", latencies_max) table.add_data("P99", "%.2f", latencies_p99) table.pretty_print()
def add_data(self, name:str, data_format:str, data:list): self.add_stat(name, data_format, Statistics(data))