lmi-commits
[Top][All Lists]
Advanced

[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))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]