[Libreoffice-commits] .: Branch 'feature/matrix-new-backend' - sc/source
Kohei Yoshida
kohei at kemper.freedesktop.org
Wed Jul 18 07:44:12 PDT 2012
sc/source/core/tool/scmatrix.cxx | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
New commits:
commit 5c37e5193616aefb51b10f6e997b43571a0a6eac
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date: Wed Jul 18 10:43:32 2012 -0400
Slightly more efficient compareMatrix.
Have a separate result matrix and have it initialize with boolean
block. This way inserting the result of each element does not cause
reallocation of existing blocks.
Change-Id: Id89114ed5df40cde80129e4479d9b4e7d2e12cc0
diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx
index dea3c83..8ff39c6 100644
--- a/sc/source/core/tool/scmatrix.cxx
+++ b/sc/source/core/tool/scmatrix.cxx
@@ -237,7 +237,7 @@ namespace {
typedef mdds::multi_type_matrix<custom_string_trait> MatrixImplType;
-struct ElemEqual : public unary_function<double, bool>
+struct ElemEqualZero : public unary_function<double, bool>
{
bool operator() (double val) const
{
@@ -245,7 +245,7 @@ struct ElemEqual : public unary_function<double, bool>
}
};
-struct ElemNotEqual : public unary_function<double, bool>
+struct ElemNotEqualZero : public unary_function<double, bool>
{
bool operator() (double val) const
{
@@ -253,7 +253,7 @@ struct ElemNotEqual : public unary_function<double, bool>
}
};
-struct ElemGreater : public unary_function<double, bool>
+struct ElemGreaterZero : public unary_function<double, bool>
{
bool operator() (double val) const
{
@@ -261,7 +261,7 @@ struct ElemGreater : public unary_function<double, bool>
}
};
-struct ElemLess : public unary_function<double, bool>
+struct ElemLessZero : public unary_function<double, bool>
{
bool operator() (double val) const
{
@@ -269,7 +269,7 @@ struct ElemLess : public unary_function<double, bool>
}
};
-struct ElemGreaterEqual : public unary_function<double, bool>
+struct ElemGreaterEqualZero : public unary_function<double, bool>
{
bool operator() (double val) const
{
@@ -277,7 +277,7 @@ struct ElemGreaterEqual : public unary_function<double, bool>
}
};
-struct ElemLessEqual : public unary_function<double, bool>
+struct ElemLessEqualZero : public unary_function<double, bool>
{
bool operator() (double val) const
{
@@ -289,6 +289,8 @@ template<typename _Comp>
void compareMatrix(MatrixImplType& rMat)
{
MatrixImplType::size_pair_type aDim = rMat.size();
+ MatrixImplType aNewMat(aDim.row, aDim.column, false); // initialize with boolean block. faster this way.
+
_Comp aComp;
for (size_t i = 0; i < aDim.row; ++i)
{
@@ -304,9 +306,10 @@ void compareMatrix(MatrixImplType& rMat)
continue;
bool b = aComp(fVal);
- rMat.set(i, j, b);
+ aNewMat.set(i, j, b);
}
}
+ aNewMat.swap(rMat);
}
}
@@ -841,32 +844,32 @@ void ScMatrixImpl::FillDouble( double fVal, SCSIZE nC1, SCSIZE nR1, SCSIZE nC2,
void ScMatrixImpl::CompareEqual()
{
- compareMatrix<ElemEqual>(maMat);
+ compareMatrix<ElemEqualZero>(maMat);
}
void ScMatrixImpl::CompareNotEqual()
{
- compareMatrix<ElemNotEqual>(maMat);
+ compareMatrix<ElemNotEqualZero>(maMat);
}
void ScMatrixImpl::CompareLess()
{
- compareMatrix<ElemLess>(maMat);
+ compareMatrix<ElemLessZero>(maMat);
}
void ScMatrixImpl::CompareGreater()
{
- compareMatrix<ElemGreater>(maMat);
+ compareMatrix<ElemGreaterZero>(maMat);
}
void ScMatrixImpl::CompareLessEqual()
{
- compareMatrix<ElemLessEqual>(maMat);
+ compareMatrix<ElemLessEqualZero>(maMat);
}
void ScMatrixImpl::CompareGreaterEqual()
{
- compareMatrix<ElemGreaterEqual>(maMat);
+ compareMatrix<ElemGreaterEqualZero>(maMat);
}
namespace {
More information about the Libreoffice-commits
mailing list