[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [4929] Replace product_database::constrain_scalar() with i
From: |
Greg Chicares |
Subject: |
[lmi-commits] [4929] Replace product_database::constrain_scalar() with inline code |
Date: |
Sat, 08 May 2010 19:27:21 +0000 |
Revision: 4929
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=4929
Author: chicares
Date: 2010-05-08 19:27:20 +0000 (Sat, 08 May 2010)
Log Message:
-----------
Replace product_database::constrain_scalar() with inline code
Modified Paths:
--------------
lmi/trunk/ChangeLog
lmi/trunk/database.cpp
lmi/trunk/database.hpp
lmi/trunk/ihs_database.cpp
lmi/trunk/input_test.cpp
Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2010-05-08 15:16:36 UTC (rev 4928)
+++ lmi/trunk/ChangeLog 2010-05-08 19:27:20 UTC (rev 4929)
@@ -25590,3 +25590,13 @@
noted 20100506T0226Z by making product_database::Query(int) several
times faster.
+20100508T1927Z <address@hidden> [710]
+
+ database.cpp
+ database.hpp
+ ihs_database.cpp
+ input_test.cpp
+Replace product_database::constrain_scalar() with inline code. It is
+faster to avoid calling GetEntry() repeatedly, especially now that
+GetEntry() dominates the time spent in Query().
+
Modified: lmi/trunk/database.cpp
===================================================================
--- lmi/trunk/database.cpp 2010-05-08 15:16:36 UTC (rev 4928)
+++ lmi/trunk/database.cpp 2010-05-08 19:27:20 UTC (rev 4929)
@@ -97,16 +97,16 @@
void product_database::initialize()
{
index_ = database_index(Gender, Class, Smoker, IssueAge, UWBasis, State);
- constrain_scalar(DB_EndtAge);
- length_ = static_cast<int>(*GetEntry(DB_EndtAge)[index_]) - IssueAge;
+ length_ = static_cast<int>(Query(DB_EndtAge)) - IssueAge;
LMI_ASSERT(0 < length_ && length_ <= methuselah);
}
//===========================================================================
double product_database::Query(int k) const
{
- constrain_scalar(k); // TODO ?? Is the extra overhead acceptable?
- return *GetEntry(k)[index_];
+ database_entity const& v = GetEntry(k);
+ LMI_ASSERT(1 == v.GetLength());
+ return *v[index_];
}
//===========================================================================
@@ -139,13 +139,3 @@
return i->second;
}
-/// Constrain the value extracted from the database to be scalar--i.e.,
-/// invariant by duration. The database item may nonetheless vary
-/// across any axis except duration.
-
-void product_database::constrain_scalar(int k) const
-{
- database_entity const& v = GetEntry(k);
- LMI_ASSERT(1 == v.GetLength());
-}
-
Modified: lmi/trunk/database.hpp
===================================================================
--- lmi/trunk/database.hpp 2010-05-08 15:16:36 UTC (rev 4928)
+++ lmi/trunk/database.hpp 2010-05-08 19:27:20 UTC (rev 4929)
@@ -82,8 +82,6 @@
void initialize();
void initialize(std::string const& NewFilename);
- void constrain_scalar(int k) const;
-
database_index index_;
int length_;
Modified: lmi/trunk/ihs_database.cpp
===================================================================
--- lmi/trunk/ihs_database.cpp 2010-05-08 15:16:36 UTC (rev 4928)
+++ lmi/trunk/ihs_database.cpp 2010-05-08 19:27:20 UTC (rev 4929)
@@ -145,23 +145,16 @@
void product_database::initialize()
{
index_ = database_index(Gender, Class, Smoker, IssueAge, UWBasis, State);
-
-// New code added to Query(int) uses length_ to test
-// for validity. We can't go through that validity check when
-// calculating length_ itself, which requires retrieving
-// endowment age. But once we have length_, we can make sure
-// endowment age doesn't vary by duration.
-// length_ = Query(DB_EndtAge) - IssueAge;
- length_ = static_cast<int>(*GetEntry(DB_EndtAge)[index_]) - IssueAge;
+ length_ = static_cast<int>(Query(DB_EndtAge)) - IssueAge;
LMI_ASSERT(0 < length_ && length_ <= methuselah);
- constrain_scalar(DB_EndtAge);
}
//===========================================================================
double product_database::Query(int k) const
{
- constrain_scalar(k); // TODO ?? Is the extra overhead acceptable?
- return *GetEntry(k)[index_];
+ database_entity const& v = GetEntry(k);
+ LMI_ASSERT(1 == v.GetLength());
+ return *v[index_];
}
//===========================================================================
@@ -194,13 +187,3 @@
return i->second;
}
-/// Constrain the value extracted from the database to be scalar--i.e.,
-/// invariant by duration. The database item may nonetheless vary
-/// across any axis except duration.
-
-void product_database::constrain_scalar(int k) const
-{
- database_entity const& v = GetEntry(k);
- LMI_ASSERT(1 == v.GetLength());
-}
-
Modified: lmi/trunk/input_test.cpp
===================================================================
--- lmi/trunk/input_test.cpp 2010-05-08 15:16:36 UTC (rev 4928)
+++ lmi/trunk/input_test.cpp 2010-05-08 19:27:20 UTC (rev 4929)
@@ -146,7 +146,6 @@
std::cout
<< "\n Database speed tests..."
<< "\n initialize() : " <<
TimeAnAliquot(boost::bind(&product_database::initialize, &db))
- << "\n constrain_scalar(): " <<
TimeAnAliquot(boost::bind(&product_database::constrain_scalar, &db, DB_EndtAge))
<< "\n Query(vector) : " <<
TimeAnAliquot(boost::bind(&product_database::Query, &db, v,
DB_EndtAge))
<< "\n Query(scalar) : " <<
TimeAnAliquot(boost::bind(&product_database::Query, &db, DB_EndtAge))
<< "\n GetEntry() : " <<
TimeAnAliquot(boost::bind(&product_database::GetEntry, &db, DB_EndtAge))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [4929] Replace product_database::constrain_scalar() with inline code,
Greg Chicares <=