# HG changeset patch # User Rik # Date 1488821492 28800 # Node ID 529c6d0c6684c5fb5984db5e7eac8d56b15c70cd # Parent d4834e9ac2e73523e8646107104f789b77b3f805 dir.m: Improve performance by 2.3X (bug #50416). * dir.m: Replace for loop using fullfile with strcat. Replace call to fileparts in for loop with regexprep. diff -r d4834e9ac2e7 -r 529c6d0c6684 scripts/miscellaneous/dir.m --- a/scripts/miscellaneous/dir.m Mon Mar 06 10:58:55 2017 -0500 +++ b/scripts/miscellaneous/dir.m Mon Mar 06 09:31:32 2017 -0800 @@ -105,13 +105,14 @@ elseif (S_ISDIR (st.mode)) flst = readdir (flst{1}); nf = numel (flst); - for i = 1:nf - flst{i} = fullfile (fn, flst{i}); - endfor + flst = strcat ([fn filesep], flst); endif endif if (numel (flst) > 0) + + fs = regexptranslate ("escape", filesep); + re = sprintf ('(?:^|^.+[%s])([^%s.]*.[^%s]*)?$', fs, fs, fs); ## Collect results. for i = nf:-1:1 fn = flst{i}; @@ -128,8 +129,7 @@ st = xst; endif endif - [dummy, fn, ext] = fileparts (fn); - fn = [fn ext]; + fn = regexprep (fn, re, '$1'); info(i,1).name = fn; lt = localtime (st.mtime); info(i,1).date = strftime ("%d-%b-%Y %T", lt);