revert most of my previous commit. forcing the compiler to inline only increased

its memory usage.
This commit is contained in:
Benoit Jacob 2007-12-11 14:57:42 +00:00
parent 936b0de9cc
commit 0cbdaf6bb8
14 changed files with 52 additions and 59 deletions

View File

@ -50,16 +50,16 @@ template<typename MatrixType> class Column
private:
const Column& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_matrix.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return 1; }
int _rows() const { return m_matrix.rows(); }
int _cols() const { return 1; }
Scalar& _write(int row, int col) EIGEN_ALWAYS_INLINE
Scalar& _write(int row, int col)
{
EIGEN_UNUSED(col);
return m_matrix.write(row, m_col);
}
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
EIGEN_UNUSED(col);
return m_matrix.read(row, m_col);

View File

@ -47,10 +47,10 @@ template<typename MatrixType> class Conjugate
private:
const Conjugate& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_matrix.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_matrix.cols(); }
int _rows() const { return m_matrix.rows(); }
int _cols() const { return m_matrix.cols(); }
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
return conj(m_matrix.read(row, col));
}

View File

@ -52,10 +52,10 @@ template<typename Lhs, typename Rhs> class Difference
private:
const Difference& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_lhs.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_lhs.cols(); }
int _rows() const { return m_lhs.rows(); }
int _cols() const { return m_lhs.cols(); }
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
return m_lhs.read(row, col) - m_rhs.read(row, col);
}

View File

@ -40,21 +40,21 @@ class Matrix : public MatrixBase<_Scalar, Matrix<_Scalar, _Rows, _Cols> >,
static const int RowsAtCompileTime = _Rows, ColsAtCompileTime = _Cols;
const Scalar* array() const EIGEN_ALWAYS_INLINE
const Scalar* array() const
{ return Storage::m_array; }
Scalar* array() EIGEN_ALWAYS_INLINE
Scalar* array()
{ return Storage::m_array; }
private:
Ref _ref() const { return Ref(*this); }
const Scalar& _read(int row, int col) const EIGEN_ALWAYS_INLINE
const Scalar& _read(int row, int col) const
{
return array()[row + col * Storage::_rows()];
}
Scalar& _write(int row, int col) EIGEN_ALWAYS_INLINE
Scalar& _write(int row, int col)
{
return array()[row + col * Storage::_rows()];
}

View File

@ -40,12 +40,9 @@ template<typename Scalar, typename Derived> class MatrixBase
typedef typename ForwardDecl<Derived>::Ref Ref;
typedef typename NumTraits<Scalar>::Real RealScalar;
int rows() const EIGEN_ALWAYS_INLINE
{ return static_cast<const Derived *>(this)->_rows(); }
int cols() const EIGEN_ALWAYS_INLINE
{ return static_cast<const Derived *>(this)->_cols(); }
int size() const EIGEN_ALWAYS_INLINE
{ return rows() * cols(); }
int rows() const { return static_cast<const Derived *>(this)->_rows(); }
int cols() const { return static_cast<const Derived *>(this)->_cols(); }
int size() const { return rows() * cols(); }
Ref ref() const
{ return static_cast<const Derived *>(this)->_ref(); }
@ -132,7 +129,6 @@ template<typename Scalar, typename Derived> class MatrixBase
Derived& operator/=(const std::complex<double>& other);
Scalar read(int row, int col, AssertLevel assertLevel = InternalDebugging) const
EIGEN_ALWAYS_INLINE
{
eigen_assert(assertLevel, row >= 0 && row < rows()
&& col >= 0 && col < cols());
@ -141,7 +137,6 @@ template<typename Scalar, typename Derived> class MatrixBase
Scalar operator()(int row, int col) const { return read(row, col, UserDebugging); }
Scalar& write(int row, int col, AssertLevel assertLevel = InternalDebugging)
EIGEN_ALWAYS_INLINE
{
eigen_assert(assertLevel, row >= 0 && row < rows()
&& col >= 0 && col < cols());
@ -150,7 +145,6 @@ template<typename Scalar, typename Derived> class MatrixBase
Scalar& operator()(int row, int col) { return write(row, col, UserDebugging); }
Scalar read(int index, AssertLevel assertLevel = InternalDebugging) const
EIGEN_ALWAYS_INLINE
{
eigen_assert(assertLevel, IsVector);
if(RowsAtCompileTime == 1)
@ -167,7 +161,6 @@ template<typename Scalar, typename Derived> class MatrixBase
Scalar operator[](int index) const { return read(index, UserDebugging); }
Scalar& write(int index, AssertLevel assertLevel = InternalDebugging)
EIGEN_ALWAYS_INLINE
{
eigen_assert(assertLevel, IsVector);
if(RowsAtCompileTime == 1)

View File

@ -40,15 +40,15 @@ template<typename MatrixType> class MatrixRef
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(MatrixRef)
private:
int _rows() const EIGEN_ALWAYS_INLINE { return m_matrix.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_matrix.cols(); }
int _rows() const { return m_matrix.rows(); }
int _cols() const { return m_matrix.cols(); }
const Scalar& _read(int row, int col) const EIGEN_ALWAYS_INLINE
const Scalar& _read(int row, int col) const
{
return m_matrix._read(row, col);
}
Scalar& _write(int row, int col) EIGEN_ALWAYS_INLINE
Scalar& _write(int row, int col)
{
return m_matrix.write(row, col);
}

View File

@ -41,10 +41,10 @@ class MatrixStorage
assert(rows == RowsAtCompileTime && cols == ColsAtCompileTime);
}
int _rows() const EIGEN_ALWAYS_INLINE
int _rows() const
{ return RowsAtCompileTime; }
int _cols() const EIGEN_ALWAYS_INLINE
int _cols() const
{ return ColsAtCompileTime; }
public:
@ -80,10 +80,10 @@ class MatrixStorage<Scalar, Dynamic, ColsAtCompileTime>
m_rows = rows;
}
int _rows() const EIGEN_ALWAYS_INLINE
int _rows() const
{ return m_rows; }
int _cols() const EIGEN_ALWAYS_INLINE
int _cols() const
{ return ColsAtCompileTime; }
public:
@ -124,10 +124,10 @@ class MatrixStorage<Scalar, RowsAtCompileTime, Dynamic>
m_cols = cols;
}
int _rows() const EIGEN_ALWAYS_INLINE
int _rows() const
{ return RowsAtCompileTime; }
int _cols() const EIGEN_ALWAYS_INLINE
int _cols() const
{ return m_cols; }
public:
@ -168,10 +168,10 @@ class MatrixStorage<Scalar, Dynamic, Dynamic>
m_cols = cols;
}
int _rows() const EIGEN_ALWAYS_INLINE
int _rows() const
{ return m_rows; }
int _cols() const EIGEN_ALWAYS_INLINE
int _cols() const
{ return m_cols; }
public:

View File

@ -47,10 +47,10 @@ template<typename MatrixType> class Opposite
private:
const Opposite& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_matrix.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_matrix.cols(); }
int _rows() const { return m_matrix.rows(); }
int _cols() const { return m_matrix.cols(); }
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
return -(m_matrix.read(row, col));
}

View File

@ -30,7 +30,7 @@ template<int Index, int Size, typename Lhs, typename Rhs>
struct ProductUnroller
{
static void run(int row, int col, const Lhs& lhs, const Rhs& rhs,
typename Lhs::Scalar &res)
typename Lhs::Scalar &res)
{
ProductUnroller<Index-1, Size, Lhs, Rhs>::run(row, col, lhs, rhs, res);
res += lhs.read(row, Index) * rhs.read(Index, col);
@ -41,7 +41,7 @@ template<int Size, typename Lhs, typename Rhs>
struct ProductUnroller<0, Size, Lhs, Rhs>
{
static void run(int row, int col, const Lhs& lhs, const Rhs& rhs,
typename Lhs::Scalar &res)
typename Lhs::Scalar &res)
{
res = lhs.read(row, 0) * rhs.read(0, col);
}
@ -51,7 +51,7 @@ template<int Index, typename Lhs, typename Rhs>
struct ProductUnroller<Index, Dynamic, Lhs, Rhs>
{
static void run(int row, int col, const Lhs& lhs, const Rhs& rhs,
typename Lhs::Scalar &res)
typename Lhs::Scalar &res)
{
EIGEN_UNUSED(row);
EIGEN_UNUSED(col);
@ -66,7 +66,7 @@ template<int Index, typename Lhs, typename Rhs>
struct ProductUnroller<Index, 0, Lhs, Rhs>
{
static void run(int row, int col, const Lhs& lhs, const Rhs& rhs,
typename Lhs::Scalar &res)
typename Lhs::Scalar &res)
{
EIGEN_UNUSED(row);
EIGEN_UNUSED(col);

View File

@ -57,16 +57,16 @@ template<typename MatrixType> class Row
private:
const Row& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return 1; }
int _cols() const EIGEN_ALWAYS_INLINE { return m_matrix.cols(); }
int _rows() const { return 1; }
int _cols() const { return m_matrix.cols(); }
Scalar& _write(int row, int col) EIGEN_ALWAYS_INLINE
Scalar& _write(int row, int col)
{
EIGEN_UNUSED(row);
return m_matrix.write(m_row, col);
}
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
EIGEN_UNUSED(row);
return m_matrix.read(m_row, col);

View File

@ -48,10 +48,10 @@ template<typename MatrixType> class ScalarMultiple
private:
const ScalarMultiple& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_matrix.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_matrix.cols(); }
int _rows() const { return m_matrix.rows(); }
int _cols() const { return m_matrix.cols(); }
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
return m_matrix.read(row, col) * m_scalar;
}

View File

@ -52,10 +52,10 @@ template<typename Lhs, typename Rhs> class Sum
private:
const Sum& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_lhs.rows(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_lhs.cols(); }
int _rows() const { return m_lhs.rows(); }
int _cols() const { return m_lhs.cols(); }
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
return m_lhs.read(row, col) + m_rhs.read(row, col);
}

View File

@ -46,15 +46,15 @@ template<typename MatrixType> class Transpose
private:
const Transpose& _ref() const { return *this; }
int _rows() const EIGEN_ALWAYS_INLINE { return m_matrix.cols(); }
int _cols() const EIGEN_ALWAYS_INLINE { return m_matrix.rows(); }
int _rows() const { return m_matrix.cols(); }
int _cols() const { return m_matrix.rows(); }
Scalar& _write(int row, int col) EIGEN_ALWAYS_INLINE
Scalar& _write(int row, int col)
{
return m_matrix.write(col, row);
}
Scalar _read(int row, int col) const EIGEN_ALWAYS_INLINE
Scalar _read(int row, int col) const
{
return m_matrix.read(col, row);
}

View File

@ -32,8 +32,8 @@ int main(int argc, char *argv[])
bool has_set_repeat = false;
bool has_set_seed = false;
bool need_help = false;
unsigned int seed = 0;
int repeat = 0;
unsigned int seed;
int repeat;
QStringList args = QCoreApplication::instance()->arguments();
args.takeFirst(); // throw away the first argument (path to executable)