changeset 17459:f271fa40074d

runtests.m, rundemos.m: Use readdir, rather than dir, for ~700X speed-up. * scripts/testfun/rundemos.m, scripts/testfun/runtests.m: Use readdir, rather than dir, for ~700X speed-up.
author Rik <rik@octave.org>
date Sun, 22 Sep 2013 08:15:59 -0700
parents f0ecb52097ec
children 9411ad1afa84
files scripts/testfun/rundemos.m scripts/testfun/runtests.m
diffstat 2 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/testfun/rundemos.m	Sun Sep 22 08:00:00 2013 -0700
+++ b/scripts/testfun/rundemos.m	Sun Sep 22 08:15:59 2013 -0700
@@ -64,10 +64,10 @@
 endfunction
 
 function run_all_demos (directory, do_class_dirs)
-  flist = dir (directory);
+  flist = readdir (directory);
   dirs = {};
   for i = 1:numel (flist)
-    f = flist(i).name;
+    f = flist{i};
     if ((length (f) > 2 && strcmpi (f((end-1):end), ".m")) ||
         (length (f) > 3 && strcmpi (f((end-2):end), ".cc")))
       f = fullfile (directory, f);
@@ -81,9 +81,11 @@
           input ("Press <enter> to continue: ", "s");
         endif
       endif
-    elseif (flist(i).isdir && f(1) == "@")
+    elseif (f(1) == "@")
       f = fullfile (directory, f);
-      dirs = {dirs{:}, f};
+      if (isdir (f))
+        dirs(end+1) = f;
+      endif
     endif
   endfor
 
--- a/scripts/testfun/runtests.m	Sun Sep 22 08:00:00 2013 -0700
+++ b/scripts/testfun/runtests.m	Sun Sep 22 08:15:59 2013 -0700
@@ -64,13 +64,13 @@
 endfunction
 
 function run_all_tests (directory, do_class_dirs)
-  flist = dir (directory);
+  flist = readdir (directory);
   dirs = {};
   no_tests = {};
   printf ("Processing files in %s:\n\n", directory);
   fflush (stdout);
   for i = 1:numel (flist)
-    f = flist(i).name;
+    f = flist{i};
     if ((length (f) > 2 && strcmpi (f((end-1):end), ".m")) ||
         (length (f) > 3 && strcmpi (f((end-2):end), ".cc")))
       ff = fullfile (directory, f);
@@ -80,11 +80,13 @@
         print_pass_fail (n, p);
         fflush (stdout);
       elseif (has_functions (ff))
-        no_tests{end+1} = f;
+        no_tests(end+1) = f;
       endif
-    elseif (flist(i).isdir && f(1) == "@")
+    elseif (f(1) == "@")
       f = fullfile (directory, f);
-      dirs = {dirs{:}, f};
+      if (isdir (f))
+        dirs(end+1) = f;
+      endif
     endif
   endfor
   if (! isempty (no_tests))