output of evalc
조회 수: 3 (최근 30일)
이전 댓글 표시
Hi, I am trying to load the filenames of 10000+ files (on a network path).
dir & ls seem the obvious commands, but they are both slow (33s for 18k files).
evalc on the other hand takes less than a second. (evalc('dir(...)')) however, the output is in a 1-d char array consisting of all filenames. There are spaces in the filenames as well, so that makes seperating a bit troublesome.
is it possible to get a different output format, or does anyone know a different "solution"?
Thanks! Jaap
PS. It's on a 32bit winXP
채택된 답변
Daniel Shub
2012년 1월 10일
It seems that
evalc(['dir(', FilePath. ')'])
should go faster than
D = dir(FilePath);
since the evalc method only gets the file names while the direct call gets additional information. On a local filesystem, it probably doesn't matter much, but over a network it could make a big difference.
What about using the system call. On Windows that would be
[~, filenameArray] = system('dir /b');
and on Linux it would be
[~, filenameArray] = system('ls -1');
(note it is a one and not an el). . If you have oddly named or hidden files you may need more parameters.
댓글 수: 3
Daniel Shub
2012년 1월 10일
I wouldn't extrapolate between what MATLAB does to get the directory information over a network share and how system level calls do it. My guess is it is both OS and mount type dependent. Is this a samba/windows share mount?
추가 답변 (2개)
Jan
2012년 1월 9일
Are you sure that Str = evalc(['dir(', FilePath. ')']) and D = dir(FilePath); have such a large speed difference?! Or did you just call dir at first, such that evalc('dir') can access the cached data?
Please post a copy of the used code.
댓글 수: 4
Titus Edelhofer
2012년 1월 10일
Hmm, when scanning the output of evalc you already pointed out the main obstacle: filenames with spaces will give you a hard time (probably making this approach unusable).
Titus Edelhofer
2012년 1월 10일
But you could try something similar:
p = s{2};
[a,b]=system(['dir /B "' p '"']);
It took about half the time of the dir() call ...
Titus
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 File Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!