try
{
List<string> Picture = new List<string>();
List<string> PaThS = new List<string>();
string[] SVF = {
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
};
foreach (var paths in SVF)
PaThS.AddRange(Directory.GetDirectories(paths));
foreach (var e in PaThS)
Picture.AddRange(Directory.GetFiles(e, "*.jpg", SearchOption.AllDirectories));
}
catch{}
}
Здесь перебирает слишком долго, пишу на 3.5 фрейморке, на 4 хорошо идёт
EnumerateDirectories
и EnumerateFiles
, А мне нужно на 3.5 фреймворке. GetFiles
слишком долго перебирает всё, Как можно ускорить процесс?
P.S: Вообще желательно без Linq))
P.P.S: Пишу в Консольке!
Я думаю, что нельзя значительно ускорить перебор файлов.
Если файлы находятся на одном диске и сделать многопоточность, то упретесь в производительность ЖД.
Если бы вы использовали EnumerateDirectories и EnumerateFiles, то в вашем бы случае это бы не дало особого результата, так как судя по коду вам нужен итог и между составлением списка вы ничего не обрабатываете. Т.е в любом случае вы бы ждали.
Можно заменить List<String>
, на StringCollection, этот тип быстрее работает со строками.
Можно воспользоваться WinApi, как написали в комментариях, НО чудес не бывает и не стоит ждать огроменной прибавки к скорости.
Как можно ускорить процесс?
Про ускорение перебора файлов есть в другом вопросе.
на 4 хорошо идёт EnumerateDirectories
и EnumerateFiles
Разница между Enumerate* и Get* в том, что первые возвращают файлы поштучно, а вторые собирают в массив. Из того, что enumerate тебя устраивали, могу сделать вывод, что на самом деле тебе нужно не ускорение, а просто чтобы UI не зависал на время поиска. В таком случае правильным решением будет вынести поиск файлов в отдельный поток.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В БД есть таблица результатов тестирования по русскому языку и математике (SubjectCode=2):