38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from math import sqrt
|
|
|
|
|
|
class URLResults(object):
|
|
|
|
def __init__(self, totaltime=0, num_urls=0, std_dev=0.0):
|
|
self.time = totaltime
|
|
self.count = num_urls
|
|
self.std_dev_counter = std_dev
|
|
|
|
def __add__(self, other):
|
|
new_time = self.time + other.time
|
|
new_count = self.count + other.count
|
|
new_std_dev_counter = self.std_dev_counter + other.std_dev_counter
|
|
return URLResults(new_time, new_count, new_std_dev_counter)
|
|
|
|
@property
|
|
def mean(self):
|
|
if self.count:
|
|
return self.time / float(self.count)
|
|
else:
|
|
return 0
|
|
|
|
@property
|
|
def coef_variance(self):
|
|
n = self.count
|
|
if n <= 1:
|
|
return 0
|
|
std_dev = sqrt((self.std_dev_counter / float(n - 1)) - (n / float(n - 1)) * (self.mean ** 2))
|
|
return (std_dev * 100.0) / self.mean
|
|
|
|
def print_results(self, url, results_format_str):
|
|
str_time = self._format_time(self.mean)
|
|
print(results_format_str.format(time=str_time.ljust(12), var="{0:.2f}%".format(self.coef_variance).ljust(10), url=url))
|
|
|
|
def _format_time(self, time):
|
|
return "{} ms".format(int(time))
|