summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjasplin <qt-info@nokia.com>2011-02-10 13:15:33 +0100
committerjasplin <qt-info@nokia.com>2011-02-10 13:15:33 +0100
commit4e3b52f78c5901b10724e0f137f635f87eba483e (patch)
tree5330b0d37c1016b81613de3632088d72f1e94339
parent54acb3ec1fa51f6658f091e54f0615e56b5bf27d (diff)
Optimized by replacing filter() with dictionary lookup.
-rw-r--r--scripts/getrankings.py42
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):