output of evalc
Afficher commentaires plus anciens
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
3 commentaires
Daniel Shub
le 10 Jan 2012
How are you mapping the network drive? Is it possible to run the dir command directly on the "server" and create a text file? This could speed things up a lot. Also, the way a drive is mounted can also influence how long things take.
Jaap
le 10 Jan 2012
Jaap
le 10 Jan 2012
Réponse acceptée
Plus de réponses (2)
Jan
le 9 Jan 2012
1 vote
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 commentaires
Jaap
le 10 Jan 2012
Titus Edelhofer
le 10 Jan 2012
One of the problems is definetely the point "network" path. I just created a folder with 20000 files, and the command
blub = dir(pwd);
took 1.2 seconds. But for a network drive I get similar differences as you (about 20s for dir, 0.5s for evalc).
Titus Edelhofer
le 10 Jan 2012
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).
Jaap
le 10 Jan 2012
Titus Edelhofer
le 10 Jan 2012
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
Catégories
En savoir plus sur File Operations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!