sc/source/core/inc/interpre.hxx  |    4 ++--
 sc/source/core/tool/interpr1.cxx |   20 +++++++++++---------
 2 files changed, 13 insertions(+), 11 deletions(-)

New commits:
commit 80938c6d19f67789a31d274030582b2c42c20500
Author: Michael Meeks <michael.me...@collabora.com>
Date:   Thu Sep 15 11:54:32 2016 +0100

    sc: templatize iteration to help the optimizer.
    
    A cheap & easy way to reduce the amount of redundant floating point
    math going on in the inner-loops of sumifs, countifs etc.
    
    Change-Id: Iafd8dd1bae375c8216cd6be1247e508d8207580a

diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx
index a01b60b..86389bc 100644
--- a/sc/source/core/inc/interpre.hxx
+++ b/sc/source/core/inc/interpre.hxx
@@ -551,11 +551,11 @@ void ScColumn();
 void ScRow();
 void ScSheet();
 void ScMatch();
-double IterateParametersIf( ScIterFuncIf );
 void ScCountIf();
 void ScSumIf();
 void ScAverageIf();
-double IterateParametersIfs( ScIterFuncIfs );
+template< ScIterFuncIf > double IterateParametersIf();
+template< ScIterFuncIfs > double IterateParametersIfs();
 void ScSumIfs();
 void ScAverageIfs();
 void ScCountIfs();
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index f540da9..5ec60e2 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -4704,7 +4704,8 @@ void ScInterpreter::ScCountEmptyCells()
     }
 }
 
-double ScInterpreter::IterateParametersIf( ScIterFuncIf eFunc )
+template< ScIterFuncIf eFunc >
+double ScInterpreter::IterateParametersIf()
 {
     sal_uInt8 nParamCount = GetByte();
     if ( !MustHaveParamCount( nParamCount, 2, 3 ) )
@@ -5113,12 +5114,12 @@ double ScInterpreter::IterateParametersIf( ScIterFuncIf 
eFunc )
 
 void ScInterpreter::ScSumIf()
 {
-    PushDouble( IterateParametersIf( ifSUMIF));
+    PushDouble( IterateParametersIf< ifSUMIF> ());
 }
 
 void ScInterpreter::ScAverageIf()
 {
-    PushDouble( IterateParametersIf( ifAVERAGEIF));
+    PushDouble( IterateParametersIf< ifAVERAGEIF >());
 }
 
 void ScInterpreter::ScCountIf()
@@ -5311,7 +5312,8 @@ void ScInterpreter::ScCountIf()
     }
 }
 
-double ScInterpreter::IterateParametersIfs( ScIterFuncIfs eFunc )
+template< ScIterFuncIfs eFunc >
+double ScInterpreter::IterateParametersIfs()
 {
     sal_uInt8 nParamCount = GetByte();
     sal_uInt8 nQueryCount = nParamCount / 2;
@@ -5739,28 +5741,28 @@ double ScInterpreter::IterateParametersIfs( 
ScIterFuncIfs eFunc )
 
 void ScInterpreter::ScSumIfs()
 {
-    PushDouble( IterateParametersIfs( ifSUMIFS));
+    PushDouble( IterateParametersIfs< ifSUMIFS >() );
 }
 
 void ScInterpreter::ScAverageIfs()
 {
-    PushDouble( IterateParametersIfs( ifAVERAGEIFS));
+    PushDouble( IterateParametersIfs< ifAVERAGEIFS >() );
 }
 
 void ScInterpreter::ScCountIfs()
 {
-    PushDouble( IterateParametersIfs( ifCOUNTIFS));
+    PushDouble( IterateParametersIfs< ifCOUNTIFS >() );
 }
 
 void ScInterpreter::ScMinIfs_MS()
 {
-    PushDouble( IterateParametersIfs( ifMINIFS ) );
+    PushDouble( IterateParametersIfs< ifMINIFS >() );
 }
 
 
 void ScInterpreter::ScMaxIfs_MS()
 {
-    PushDouble( IterateParametersIfs( ifMAXIFS ) );
+    PushDouble( IterateParametersIfs< ifMAXIFS >() );
 }
 
 void ScInterpreter::ScLookup()
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to