[PPL-devel] [GIT] ppl/ppl(sparse_matrices): MIP_Problem: optimize find_create() calls in linear_combine() (#2).
Marco Poletti
poletti.marco at gmail.com
Mon Mar 22 14:15:53 CET 2010
Module: ppl/ppl
Branch: sparse_matrices
Commit: d117160799a3174cd12c8d24a7d8ba378569f17b
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=d117160799a3174cd12c8d24a7d8ba378569f17b
Author: Marco Poletti <poletti.marco at gmail.com>
Date: Mon Mar 22 13:32:36 2010 +0100
MIP_Problem: optimize find_create() calls in linear_combine() (#2).
---
src/MIP_Problem.cc | 33 ++++++++++++---------------------
1 files changed, 12 insertions(+), 21 deletions(-)
diff --git a/src/MIP_Problem.cc b/src/MIP_Problem.cc
index 95ef74a..7b42739 100644
--- a/src/MIP_Problem.cc
+++ b/src/MIP_Problem.cc
@@ -1333,13 +1333,10 @@ PPL::MIP_Problem::linear_combine(matrix_row_reference_type x,
while ((i != i_end) && (j != j_end)) {
if (j->first < i->first) {
if (j->first != k) {
- // FIXME: check if adding "if (j->second != 0)" speeds this up.
- itr = x.find_create(j->first);
+ // The following statements are equivalent to
+ // sub_mul_assign(x[j->first], j->second, normalized_row_k);
+ itr = x.find_create(*j);
Coefficient& x_i = (*itr).second;
- PPL_ASSERT(x_i == 0);
-
- // sub_mul_assign(x_i, j->second, normalized_row_k);
- x_i = j->second;
x_i *= normalized_row_k;
neg_assign(x_i);
@@ -1369,12 +1366,10 @@ PPL::MIP_Problem::linear_combine(matrix_row_reference_type x,
while ((i != i_end) && (j != j_end)) {
if (j->first < i->first) {
if (j->first != k) {
- // FIXME: check if adding "if (j->second != 0)" speeds this up.
- itr = x.find_create(j->first, itr);
+ // The following statements are equivalent to
+ // sub_mul_assign(x[j->first], j->second, normalized_row_k);
+ itr = x.find_create(*j,itr);
Coefficient& x_i = (*itr).second;
- PPL_ASSERT(x_i == 0);
- // sub_mul_assign(x_i, j->second, normalized_row_k);
- x_i = j->second;
x_i *= normalized_row_k;
neg_assign(x_i);
}
@@ -1420,12 +1415,10 @@ PPL::MIP_Problem::linear_combine(matrix_row_reference_type x,
if (itr == x.end()) {
while (j != j_end) {
if (j->first != k) {
- // FIXME: check if adding "if (j->second != 0)" speeds this up.
- itr = x.find_create(j->first);
+ // The following statements are equivalent to
+ // sub_mul_assign(x[j->first], j->second, normalized_row_k);
+ itr = x.find_create(*j);
Coefficient& x_i = (*itr).second;
- PPL_ASSERT(x_i == 0);
- // sub_mul_assign(x_i, j->second, normalized_row_k);
- x_i = j->second;
x_i *= normalized_row_k;
neg_assign(x_i);
@@ -1439,12 +1432,10 @@ PPL::MIP_Problem::linear_combine(matrix_row_reference_type x,
}
while (j != j_end) {
if (j->first != k) {
- // FIXME: check if adding "if (j->second != 0)" speeds this up.
- itr = x.find_create(j->first,itr);
+ // The following statements are equivalent to
+ // sub_mul_assign(x[j->first], j->second, normalized_row_k);
+ itr = x.find_create(*j);
Coefficient& x_i = (*itr).second;
- PPL_ASSERT(x_i == 0);
- // sub_mul_assign(x_i, j->second, normalized_row_k);
- x_i = j->second;
x_i *= normalized_row_k;
neg_assign(x_i);
}
More information about the PPL-devel
mailing list