diff options
author | jasplin <qt-info@nokia.com> | 2011-02-10 13:15:33 +0100 |
---|---|---|
committer | jasplin <qt-info@nokia.com> | 2011-02-10 13:15:33 +0100 |
commit | 4e3b52f78c5901b10724e0f137f635f87eba483e (patch) | |
tree | 5330b0d37c1016b81613de3632088d72f1e94339 | |
parent | 54acb3ec1fa51f6658f091e54f0615e56b5bf27d (diff) |
Optimized by replacing filter() with dictionary lookup.
-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): |