Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Unified Diff: my_reviews.py

Issue 9764009: Add median latency to my_reviews.py. Do more calculation on the fly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: fixes Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: my_reviews.py
diff --git a/my_reviews.py b/my_reviews.py
index fc18b3565a2d3b19db4e7d7c21e864e6e3fa928f..32e61443f63ca02b4c66675f62f9caa3220b127a 100755
--- a/my_reviews.py
+++ b/my_reviews.py
@@ -61,31 +61,54 @@ class Stats(object):
def __init__(self):
self.total = 0
self.actually_reviewed = 0
- self.average_latency = 0.
- self.number_latency = 0
+ self.latencies = []
self.lgtms = 0
self.multiple_lgtms = 0
self.drive_by = 0
self.not_requested = 0
self.self_review = 0
- self.percent_done = 0.
self.percent_lgtm = 0.
self.percent_drive_by = 0.
self.percent_not_requested = 0.
self.days = 0
- self.review_per_day = 0.
- self.review_done_per_day = 0.
- def add_latency(self, latency):
- self.average_latency = (
- (self.average_latency * self.number_latency + latency) /
- (self.number_latency + 1.))
- self.number_latency += 1
+ @property
+ def average_latency(self):
+ if not self.latencies:
+ return 0
+ return sum(self.latencies) / float(len(self.latencies))
+
+ @property
+ def median_latency(self):
+ if not self.latencies:
+ return 0
+ length = len(self.latencies)
+ latencies = sorted(self.latencies)
+ if (length & 1) == 0:
+ return (latencies[length/2] + latencies[length/2+1]) / 2.
+ else:
+ return latencies[length/2]
+
+ @property
+ def percent_done(self):
+ if not self.total:
+ return 0
+ return self.actually_reviewed * 100. / self.total
+
+ @property
+ def review_per_day(self):
+ if not self.days:
+ return 0
+ return self.total * 1. / self.days
+
+ @property
+ def review_done_per_day(self):
+ if not self.days:
+ return 0
+ return self.actually_reviewed * 1. / self.days
def finalize(self, first_day, last_day):
- if self.total:
- self.percent_done = (self.actually_reviewed * 100. / self.total)
if self.actually_reviewed:
self.percent_lgtm = (self.lgtms * 100. / self.actually_reviewed)
self.percent_drive_by = (self.drive_by * 100. / self.actually_reviewed)
@@ -93,9 +116,6 @@ class Stats(object):
self.not_requested * 100. / self.actually_reviewed)
if first_day and last_day:
self.days = (to_datetime(last_day) - to_datetime(first_day)).days + 1
- if self.days:
- self.review_per_day = self.total * 1. / self.days
- self.review_done_per_day = self.actually_reviewed * 1. / self.days
def _process_issue_lgtms(issue, reviewer, stats):
@@ -145,7 +165,7 @@ def _process_issue_latency(issue, reviewer, stats):
stats.not_requested += 1
return '<no rqst sent>'
if latency > 0:
- stats.add_latency(latency)
+ stats.latencies.append(latency)
else:
stats.not_requested += 1
return to_time(latency)
@@ -239,6 +259,9 @@ def print_reviews(reviewer, created_after, created_before, instance_url):
print >> sys.stderr, (
'Average latency from request to first comment is %s.' %
to_time(stats.average_latency))
+ print >> sys.stderr, (
+ 'Median latency from request to first comment is %s.' %
+ to_time(stats.median_latency))
def print_count(reviewer, created_after, created_before, instance_url):
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698