evstr() was very slow: vectorized. benchmark added 86/18586/4
Samuel GOUGEON [Sat, 15 Oct 2016 19:56:44 +0000 (21:56 +0200)]
Change-Id: If40bffc46adaaab443295b2ec1e9c3daa36f73a1

scilab/modules/string/macros/evstr.sci
scilab/modules/string/tests/benchmarks/bench_evstr.tst [new file with mode: 0644]

index 909322b..5f801af 100644 (file)
@@ -42,9 +42,7 @@ function [%val, %ierr] = evstr(%str)
             INF = %inf;
         end
 
-        for %l = 1:size(%str, "r")
-            %t1(%l) = strcat(%str(%l, :), ",") + ";"
-        end
+        %t1 = strcat(%str, ",", "c")+";"
         %t1(1) = "%val=[" + %t1(1);
         %t1($) = part(%t1($), 1:length(%t1($)) - 1)+";";
         %t1($+1)="]";
diff --git a/scilab/modules/string/tests/benchmarks/bench_evstr.tst b/scilab/modules/string/tests/benchmarks/bench_evstr.tst
new file mode 100644 (file)
index 0000000..e8ce950
--- /dev/null
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Samuel GOUGEON <sgougeon@free.fr>
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// Benchmark test for evstr function
+m = rand(5000, 5);
+s = string(m);
+
+// <-- BENCH NB RUN : 10 -->
+// <-- BENCH START -->
+e = evstr(s);
+// <-- BENCH END -->