diff options
-rw-r--r-- | scripts/getrankings.py | 42 |
1 files changed, 13 insertions, 29 deletions
diff --git a/scripts/getrankings.py b/scripts/getrankings.py index d23cb38..d8a0a5b 100644 --- a/scripts/getrankings.py +++ b/scripts/getrankings.py @@ -81,44 +81,28 @@ class GetRankings: if context2_prev_id >= 0: # Compute deltas from previous ranking: - ranking_prev = execQuery( + ranking_prev_list = execQuery( "SELECT benchmarkId, metricId, pos" " FROM ranking" " WHERE context2Id = %d" " AND statId = %d;" % (context2_prev_id, stat_id)) + ranking_prev = {} + for benchmark_id, metric_id, pos in ranking_prev_list: + ranking_prev[benchmark_id, metric_id] = pos + + # Append deltas where applicable: ranking_without_deltas = ranking ranking = [] - for row in ranking_without_deltas: - benchmark_id = row[0] - metric_id = row[1] - context1_id = row[2] - pos = row[3] - value = row[4] - - new_row = [ - benchmark_id, metric_id, context1_id, pos, value] - + for (benchmark_id, metric_id, context1_id, pos, value + ) in ranking_without_deltas: + row = [benchmark_id, metric_id, context1_id, pos, value] if pos >= 0: - - # ### Maybe optimize the search for row_prev by storing - # previous rankings in a dictionary with - # (benchmark_id, metric_id) as key? - row_prev = filter( - lambda row: row[0] == benchmark_id - and row[1] == metric_id, - ranking_prev) - - assert len(row_prev) == 1 - assert len(row_prev[0]) == 3 - pos_prev = row_prev[0][2] - + pos_prev = ranking_prev[benchmark_id, metric_id] if pos_prev >= 0: delta = pos_prev - pos - new_row.append(delta) - - - ranking.append(new_row) + row.append(delta) + ranking.append(row) @@ -184,7 +168,7 @@ class GetRankings: 'snapshots': map( lambda s: (idToText("sha1", s[0]), s[1]), self.snapshots), 'rankings': self.rankings - }, sys.stdout, indent=4) + }, sys.stdout) class GetRankingsAsJSON(GetRankings): |