summaryrefslogtreecommitdiffstats
path: root/courgette
diff options
context:
space:
mode:
authorhuangs <huangs@chromium.org>2015-08-18 07:05:34 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-18 14:06:12 +0000
commit2bffdb364054d87a1cd7006735f36640b1e6bef7 (patch)
treeac78b66948200221413071b4b03481c39e0ddc3a /courgette
parent4095890cc20913234e839d3f135bbdc7ea429300 (diff)
downloadchromium_src-2bffdb364054d87a1cd7006735f36640b1e6bef7.zip
chromium_src-2bffdb364054d87a1cd7006735f36640b1e6bef7.tar.gz
chromium_src-2bffdb364054d87a1cd7006735f36640b1e6bef7.tar.bz2
[Courgette] Unnest maximize loop in adjustment_method_2.cc to speed up courgette-gen.
In adjustment_method_2.cc, AssignmentProblem::AddPatternToLabelQueue(), a maximize loop seems nested one level too deep. Moving it up one level improves courgette-gen. Experiment (goo.gl/OlPjj6) shows this leads to 10% speed up in AdjustmentMethod, and 5% speed up in courgette-gen. We also verified that final patch is unchanged, although in theory the code may cause patch change owing to change in kUnwieldy early exit condition. Review URL: https://codereview.chromium.org/1286173005 Cr-Commit-Position: refs/heads/master@{#343912}
Diffstat (limited to 'courgette')
-rw-r--r--courgette/adjustment_method_2.cc24
1 files changed, 12 insertions, 12 deletions
diff --git a/courgette/adjustment_method_2.cc b/courgette/adjustment_method_2.cc
index 2869d49..57f02ac 100644
--- a/courgette/adjustment_method_2.cc
+++ b/courgette/adjustment_method_2.cc
@@ -1073,19 +1073,19 @@ class AssignmentProblem {
sums[program_info][model_info] += score;
}
}
+ }
- for (ScoreSet::iterator assignee_iterator = sums.begin();
- assignee_iterator != sums.end();
- ++assignee_iterator) {
- LabelInfo* program_info = assignee_iterator->first;
- for (LabelToScore::iterator p = assignee_iterator->second.begin();
- p != assignee_iterator->second.end();
- ++p) {
- LabelInfo* model_info = p->first;
- int score = p->second;
- int* slot = &maxima[program_info][model_info];
- *slot = std::max(*slot, score);
- }
+ for (ScoreSet::iterator assignee_iterator = sums.begin();
+ assignee_iterator != sums.end();
+ ++assignee_iterator) {
+ LabelInfo* program_info = assignee_iterator->first;
+ for (LabelToScore::iterator p = assignee_iterator->second.begin();
+ p != assignee_iterator->second.end();
+ ++p) {
+ LabelInfo* model_info = p->first;
+ int score = p->second;
+ int* slot = &maxima[program_info][model_info];
+ *slot = std::max(*slot, score);
}
}
}