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