[PPL-devel] [GIT] ppl/ppl(sparse_matrices): PIP_Solution_Node::Tableau: optimize scale( ) method for sparse matrices.

Marco Poletti poletti.marco at gmail.com
Tue Mar 16 13:48:08 CET 2010


Module: ppl/ppl
Branch: sparse_matrices
Commit: 742786aa3e321f73f0494b8293ede324b8edf5fe
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=742786aa3e321f73f0494b8293ede324b8edf5fe

Author: Marco Poletti <poletti.marco at gmail.com>
Date:   Tue Mar 16 13:46:20 2010 +0100

PIP_Solution_Node::Tableau: optimize scale() method for sparse matrices.

---

 src/PIP_Tree.cc |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index e448c5b..5cd9ad0 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -1557,12 +1557,20 @@ PIP_Solution_Node::Tableau::normalize() {
 void
 PIP_Solution_Node::Tableau::scale(Coefficient_traits::const_reference ratio) {
   for (dimension_type i = s.num_rows(); i-- > 0; ) {
-    matrix_row_reference_type s_i = s[i];
-    for (dimension_type j = s.num_columns(); j-- > 0; )
-      s_i[j] *= ratio;
-    matrix_row_reference_type t_i = t[i];
-    for (dimension_type j = t.num_columns(); j-- > 0; )
-      t_i[j] *= ratio;
+    {
+      matrix_row_reference_type s_i = s[i];
+      matrix_row_iterator j = s_i.begin();
+      matrix_row_iterator j_end = s_i.end();
+      for ( ; j!=j_end; ++j)
+        (*j).second *= ratio;
+    }
+    {
+      matrix_row_reference_type t_i = t[i];
+      matrix_row_iterator j = t_i.begin();
+      matrix_row_iterator j_end = t_i.end();
+      for ( ; j!=j_end; ++j)
+        (*j).second *= ratio;
+    }
   }
   denom *= ratio;
 }




More information about the PPL-devel mailing list