lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] odd/eraseme_input_ctor f58db06: Experimentally "spee


From: Greg Chicares
Subject: [lmi-commits] [lmi] odd/eraseme_input_ctor f58db06: Experimentally "speed up" Input::Input()
Date: Wed, 29 Jan 2020 09:00:56 -0500 (EST)

branch: odd/eraseme_input_ctor
commit f58db06513a9e8b3e38bd466df879deeb96af7e9
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Experimentally "speed up" Input::Input()
    
    Timings before these changes:
      Default ctor: 2.056e-03 s mean;       1999 us least of 100 runs
      Default ctor: 2.064e-03 s mean;       1992 us least of 100 runs
      Default ctor: 2.064e-03 s mean;       2017 us least of 100 runs
    Timings after these changes:
      Default ctor: 2.063e-03 s mean;       1985 us least of 100 runs
      Default ctor: 2.081e-03 s mean;       1991 us least of 100 runs
      Default ctor: 2.053e-03 s mean;       1990 us least of 100 runs
    
    Median of each set of three timings: 1999 vs 1990, so the speedup seems
    to be nine microseconds. The difference in the mean likewise affects
    only the fourth significant digit.
---
 input.cpp      | 40 ++++++++++++++++++++--------------------
 input_test.cpp | 27 +++++++++++++++++----------
 2 files changed, 37 insertions(+), 30 deletions(-)

diff --git a/input.cpp b/input.cpp
index 4bd0be4..a7480c9 100644
--- a/input.cpp
+++ b/input.cpp
@@ -33,8 +33,8 @@
 /// UDT defaults are presently appropriate.
 
 Input::Input()
-    :IssueAge                         {"45"}
-    ,RetirementAge                    {"65"}
+    :IssueAge                         {45}
+    ,RetirementAge                    {65}
     ,Gender                           {"Male"}
     ,Smoking                          {"Nonsmoker"}
     ,UnderwritingClass                {"Standard"}
@@ -42,7 +42,7 @@ Input::Input()
 //    ,AccidentalDeathBenefit           {""}
 //    ,TermRider                        {""}
 //    ,TermRiderAmount                  {""}
-    ,TotalSpecifiedAmount             {"1000000"}
+    ,TotalSpecifiedAmount             {1000000}
 //    ,TermRiderProportion              {""}
 //    ,TermRiderUseProportion           {""}
 //    ,DateOfBirth                      {""}
@@ -69,18 +69,18 @@ Input::Input()
     ,UseCurrentDeclaredRate           {"Yes"}
 //    ,GeneralAccountRateType           {"Credited rate"}
     ,SeparateAccountRateType          {"Gross rate"}
-    ,LoanRate                         {"0.06"}
+    ,LoanRate                         {0.06}
 //    ,LoanRateType                     {""}
     ,OverrideExperienceReserveRate    {"Yes"}
-    ,ExperienceReserveRate            {"0.02"}
-    ,ExperienceRatingInitialKFactor   {"1"}
+    ,ExperienceReserveRate            {0.02}
+    ,ExperienceRatingInitialKFactor   {1}
 //    ,WithdrawToBasisThenLoan          {""}
 //    ,UseAverageOfAllFunds             {""}
 //    ,OverrideFundManagementFee        {""}
     ,FundChoiceType                   {"Choose funds"}
 //    ,InputFundManagementFee           {""}
 //    ,RunOrder                         {""}
-    ,NumberOfIdenticalLives           {"1"}
+    ,NumberOfIdenticalLives           {1}
 //    ,UseExperienceRating              {""}
 //    ,UsePartialMortality              {""}
 //    ,PartialMortalityTable            {""}
@@ -103,9 +103,9 @@ Input::Input()
     ,AgentPhone                       {"*** REQUIRED FIELD MISSING ***"}
     ,AgentId                          {"*** REQUIRED FIELD MISSING ***"}
 //    ,InsuredPremiumTableNumber        {""}
-    ,InsuredPremiumTableFactor        {"1"}
+    ,InsuredPremiumTableFactor        {1}
 //    ,CorporationPremiumTableNumber    {""}
-    ,CorporationPremiumTableFactor    {"1"}
+    ,CorporationPremiumTableFactor    {1}
 //    ,EffectiveDate                    {""}
 //    ,DefinitionOfLifeInsurance        {""}
 //    ,DefinitionOfMaterialChange       {""}
@@ -113,11 +113,11 @@ Input::Input()
 //    ,RetireesCanEnroll                {""}
 //    ,GroupUnderwritingType            {""}
 //    ,LastCoiReentryDate               {""}
-      ,ListBillDate                   {"2440588"} // Assume no inforce 
<19700101
+      ,ListBillDate                   {calendar_date(jdn_t(2440588))} // 
Assume no inforce <19700101
 //    ,BlendGender                      {""}
 //    ,BlendSmoking                     {""}
-    ,MaleProportion                   {"1"}
-    ,NonsmokerProportion              {"1"}
+    ,MaleProportion                   {1}
+    ,NonsmokerProportion              {1}
     ,TermAdjustmentMethod             {"Adjust base first"}
     ,IncludeInComposite               {"Yes"}
 //    ,Comments                         {""}
@@ -164,21 +164,21 @@ Input::Input()
     ,Inforce7702AAmountsPaidHistory   {"0"}
     ,Country                          {"US"}
 //    ,OverrideCoiMultiplier            {""}
-    ,CountryCoiMultiplier             {"1"}
+    ,CountryCoiMultiplier             {1}
     ,SurviveToType                    {"Survive to age limit"}
-    ,SurviveToYear                    {"100"}
-    ,SurviveToAge                     {"99"}
-    ,MaximumNaar                      {"1000000000"}
+    ,SurviveToYear                    {100}
+    ,SurviveToAge                     {99}
+    ,MaximumNaar                      {1000000000}
 //    ,ChildRider                       {""}
 //    ,ChildRiderAmount                 {""}
 //    ,SpouseRider                      {""}
 //    ,SpouseRiderAmount                {""}
-    ,SpouseIssueAge                   {"45"}
+    ,SpouseIssueAge                   {45}
     ,StateOfJurisdiction              {"CT"}
     ,PremiumTaxState                  {"CT"}
-    ,SalarySpecifiedAmountFactor      {"1"}
-    ,SalarySpecifiedAmountCap         {"100000"}
-    ,SalarySpecifiedAmountOffset      {"50000"}
+    ,SalarySpecifiedAmountFactor      {1}
+    ,SalarySpecifiedAmountCap         {100000}
+    ,SalarySpecifiedAmountOffset      {50000}
 //    ,HoneymoonEndorsement             {""}
 //    ,PostHoneymoonSpread              {""}
     ,ExtraMonthlyCustodialFee         {"0"}
diff --git a/input_test.cpp b/input_test.cpp
index f0d3c42..5cc2b43 100644
--- a/input_test.cpp
+++ b/input_test.cpp
@@ -84,6 +84,7 @@ class input_test
         ,bool               test_speed_only
         );
 
+    static void mete_default_ctor();
     static void mete_copy_ctor();
     static void mete_assign_op();
     static void mete_equal_op();
@@ -446,16 +447,17 @@ void input_test::assay_speed()
 
     std::cout
         << "\n  Class 'Input' speed tests..."
-        << "\n  Copy ctor: " << TimeAnAliquot(mete_copy_ctor         )
-        << "\n  Assign   : " << TimeAnAliquot(mete_assign_op         )
-        << "\n  Equals   : " << TimeAnAliquot(mete_equal_op          )
-        << "\n  Overhead : " << TimeAnAliquot(mete_overhead          )
-        << "\n  Read     : " << TimeAnAliquot(std::bind(mete_read, e))
-        << "\n  Write    : " << TimeAnAliquot(mete_write             )
-        << "\n  'cns' io : " << TimeAnAliquot(mete_cns_io            )
-        << "\n  'ill' io : " << TimeAnAliquot(mete_ill_io            )
-        << "\n  'cns' xsd: " << TimeAnAliquot(mete_cns_xsd           )
-        << "\n  'ill' xsd: " << TimeAnAliquot(mete_ill_xsd           )
+        << "\n  Default ctor: " << TimeAnAliquot(mete_default_ctor      )
+        << "\n  Copy ctor   : " << TimeAnAliquot(mete_copy_ctor         )
+        << "\n  Assign      : " << TimeAnAliquot(mete_assign_op         )
+        << "\n  Equals      : " << TimeAnAliquot(mete_equal_op          )
+        << "\n  Overhead    : " << TimeAnAliquot(mete_overhead          )
+        << "\n  Read        : " << TimeAnAliquot(std::bind(mete_read, e))
+        << "\n  Write       : " << TimeAnAliquot(mete_write             )
+        << "\n  'cns' io    : " << TimeAnAliquot(mete_cns_io            )
+        << "\n  'ill' io    : " << TimeAnAliquot(mete_ill_io            )
+        << "\n  'cns' xsd   : " << TimeAnAliquot(mete_cns_xsd           )
+        << "\n  'ill' xsd   : " << TimeAnAliquot(mete_ill_xsd           )
         << '\n'
         ;
 }
@@ -491,6 +493,11 @@ void input_test::test_document_io
         }
 }
 
+void input_test::mete_default_ctor()
+{
+    Input volatile y;
+}
+
 void input_test::mete_copy_ctor()
 {
     static Input const x;



reply via email to

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