improve a little bit the bool2s speed. 99/21599/1
Cedric Delamarre [Thu, 15 Oct 2020 15:32:05 +0000 (17:32 +0200)]
    b = rand(1000,1000)<0.5;
    tic; for i = 1:100, b*1; end, toc()
    tic; for i = 1:100, bool2s(b); end, toc()
    tic; for i = 1:100, b.*1; end, toc()

   this is linked to https://codereview.scilab.org/#/c/21526/

Change-Id: I520764ef62ad70dcfd68804877e32f831a512beb

scilab/modules/boolean/sci_gateway/cpp/sci_bool2s.cpp

index dc78b12..5150ac5 100644 (file)
@@ -52,7 +52,8 @@ types::Function::ReturnValue sci_bool2s(types::typed_list &in, int _iRetCount, t
         double* pdblIn  = pIn->get();
         double* pdblOut = pD->get();
 
-        for (int i = 0 ; i < pIn->getSize() ; i++)
+        int iSize = pIn->getSize();
+        for (int i = 0 ; i < iSize ; i++)
         {
             pdblOut[i] = static_cast<double>(pdblIn[i] != 0);
         }
@@ -66,7 +67,8 @@ types::Function::ReturnValue sci_bool2s(types::typed_list &in, int _iRetCount, t
         int* piIn = pIn->get();
         double* pdblOut = pD->get();
 
-        for (int i = 0 ; i < pIn->getSize() ; i++)
+        int iSize = pIn->getSize();
+        for (int i = 0 ; i < iSize ; i++)
         {
             pdblOut[i] = static_cast<double>(piIn[i]);
         }