lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master 50d271d 5/5: Perform a transcendental calcula


From: Greg Chicares
Subject: [lmi-commits] [lmi] master 50d271d 5/5: Perform a transcendental calculation OAOO: part deux
Date: Sat, 13 Feb 2021 18:33:37 -0500 (EST)

branch: master
commit 50d271de9a69e7a41c6d2825d7fc4b85f49a2652
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Perform a transcendental calculation OAOO: part deux
    
    Removed old code that had been kept only to validate its replacement.
    
    Speed is nearly unaffected, which is somewhat surprising: calling
    i_upper_12_over_12_from_i<double>() for all durations in class
    InterestRates, with the important optimization of reusing the previous
    year's rate if it's the same instead of recalculating it, should be
    faster than calling it for each year in the monthiversary loop with no
    such optimization. OTOH, some of the new code such as (simplified):
    
        for(int j = mce_gen_curr; j < mc_n_gen_bases; ++j)
            for(int k = mce_sep_full; k < mc_n_sep_bases; ++k)
                SepAcctGrossRate_[i]   [k] = Zero_;
    
    is certainly inefficient in that identical assignments are performed
    mc_n_gen_bases times when once would suffice.
    
    Nevertheless, this is a good change because it moves a compound-interest
    calculation from class AccountValue to class InterestRates where such
    calculations naturally belong, and it proceeds naturally from commit
    365cbb477dfdc (whose more palpable speedup is recorded in 1017bcb08614).
---
 Speed_gcc_i686-w64-mingw32    | 12 ++++++------
 Speed_gcc_x86_64-pc-linux-gnu | 12 ++++++------
 Speed_gcc_x86_64-w64-mingw32  | 12 ++++++------
 ihs_acctval.cpp               |  7 -------
 interest_rates.cpp            |  8 --------
 5 files changed, 18 insertions(+), 33 deletions(-)

diff --git a/Speed_gcc_i686-w64-mingw32 b/Speed_gcc_i686-w64-mingw32
index a94453d..4029e16 100644
--- a/Speed_gcc_i686-w64-mingw32
+++ b/Speed_gcc_i686-w64-mingw32
@@ -1,7 +1,7 @@
 Test speed:
-  naic, no solve      : 4.978e-02 s mean;      49470 us least of  21 runs
-  naic, specamt solve : 9.404e-02 s mean;      93598 us least of  11 runs
-  naic, ee prem solve : 8.580e-02 s mean;      85128 us least of  12 runs
-  finra, no solve     : 1.510e-02 s mean;      14943 us least of  67 runs
-  finra, specamt solve: 5.543e-02 s mean;      54929 us least of  19 runs
-  finra, ee prem solve: 5.110e-02 s mean;      50641 us least of  20 runs
+  naic, no solve      : 5.015e-02 s mean;      49840 us least of  20 runs
+  naic, specamt solve : 9.461e-02 s mean;      94300 us least of  11 runs
+  naic, ee prem solve : 8.596e-02 s mean;      85719 us least of  12 runs
+  finra, no solve     : 1.574e-02 s mean;      14970 us least of  64 runs
+  finra, specamt solve: 5.573e-02 s mean;      55361 us least of  18 runs
+  finra, ee prem solve: 5.118e-02 s mean;      50862 us least of  20 runs
diff --git a/Speed_gcc_x86_64-pc-linux-gnu b/Speed_gcc_x86_64-pc-linux-gnu
index 4090270..ba2400c 100644
--- a/Speed_gcc_x86_64-pc-linux-gnu
+++ b/Speed_gcc_x86_64-pc-linux-gnu
@@ -1,7 +1,7 @@
 Test speed:
-  naic, no solve      : 1.806e-02 s mean;      17727 us least of  56 runs
-  naic, specamt solve : 3.325e-02 s mean;      32824 us least of  31 runs
-  naic, ee prem solve : 3.031e-02 s mean;      29903 us least of  33 runs
-  finra, no solve     : 5.315e-03 s mean;       5073 us least of 100 runs
-  finra, specamt solve: 1.914e-02 s mean;      18778 us least of  53 runs
-  finra, ee prem solve: 1.765e-02 s mean;      17267 us least of  57 runs
+  naic, no solve      : 1.817e-02 s mean;      17779 us least of  56 runs
+  naic, specamt solve : 3.291e-02 s mean;      32497 us least of  31 runs
+  naic, ee prem solve : 3.006e-02 s mean;      29620 us least of  34 runs
+  finra, no solve     : 5.265e-03 s mean;       5078 us least of 100 runs
+  finra, specamt solve: 1.896e-02 s mean;      18773 us least of  53 runs
+  finra, ee prem solve: 1.748e-02 s mean;      17089 us least of  58 runs
diff --git a/Speed_gcc_x86_64-w64-mingw32 b/Speed_gcc_x86_64-w64-mingw32
index 65717d9..90e2a82 100644
--- a/Speed_gcc_x86_64-w64-mingw32
+++ b/Speed_gcc_x86_64-w64-mingw32
@@ -1,7 +1,7 @@
 Test speed:
-  naic, no solve      : 2.449e-02 s mean;      24186 us least of  41 runs
-  naic, specamt solve : 4.232e-02 s mean;      41912 us least of  24 runs
-  naic, ee prem solve : 3.878e-02 s mean;      38462 us least of  26 runs
-  finra, no solve     : 9.237e-03 s mean;       9074 us least of 100 runs
-  finra, specamt solve: 2.553e-02 s mean;      25240 us least of  40 runs
-  finra, ee prem solve: 2.374e-02 s mean;      23465 us least of  43 runs
+  naic, no solve      : 2.452e-02 s mean;      24318 us least of  41 runs
+  naic, specamt solve : 4.470e-02 s mean;      42173 us least of  23 runs
+  naic, ee prem solve : 3.898e-02 s mean;      38684 us least of  26 runs
+  finra, no solve     : 9.209e-03 s mean;       9072 us least of 100 runs
+  finra, specamt solve: 2.551e-02 s mean;      25326 us least of  40 runs
+  finra, ee prem solve: 2.379e-02 s mean;      23595 us least of  43 runs
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index 3001876..64f0f2e 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -39,7 +39,6 @@
 #include "ledger_variant.hpp"
 #include "loads.hpp"
 #include "materially_equal.hpp"
-#include "math_functions.hpp"           // EXPUNGE
 #include "miscellany.hpp"
 #include "mortality_rates.hpp"
 #include "outlay.hpp"
@@ -1320,12 +1319,6 @@ void AccountValue::SetAnnualInvariants()
             )
             [Year]
             ;
-        // EXPUNGE
-        double YearsSepAcctGrossRate2 = i_upper_12_over_12_from_i<double>()
-            (InterestRates_->SepAcctGrossRate(SepBasis_, mce_annual_rate)[Year]
-            );
-        YearsSepAcctGrossRate2 = round_interest_rate()(YearsSepAcctGrossRate2);
-        LMI_ASSERT(materially_equal(YearsSepAcctGrossRate, 
YearsSepAcctGrossRate2));
         }
 
     YearsDcvIntRate         = GetMly7702iGlp()[Year];
diff --git a/interest_rates.cpp b/interest_rates.cpp
index bc7c62c..0cc1ebf 100644
--- a/interest_rates.cpp
+++ b/interest_rates.cpp
@@ -891,14 +891,6 @@ void InterestRates::DynamicMlySepAcctRate
 // bases?
 
 // TODO ?? What if it's not 'full'--what if we want 'half' or 'zero'?
-            MonthlySepAcctGrossRate = i_upper_12_over_12_from_i<double>()
-                (SepAcctGrossRate_[mce_annual_rate][mce_sep_full][year]
-                );
-            LMI_ASSERT // EXPUNGE
-                (  MonthlySepAcctGrossRate
-                == SepAcctGrossRate_[mce_monthly_rate][mce_sep_full][year]
-                );
-            // Instead of the previous two statements, just do this:
             MonthlySepAcctGrossRate = 
SepAcctGrossRate_[mce_monthly_rate][mce_sep_full][year];
 
             convert_interest_rates



reply via email to

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