Mercurial > octave
changeset 23248:529c6d0c6684
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.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 06 Mar 2017 09:31:32 -0800 |
parents | d4834e9ac2e7 |
children | 21fc54e4bb7b |
files | scripts/miscellaneous/dir.m |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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);