У меня есть набор файлов XML, которые я хочу загрузить в память для обработки.
Я загружаю файлы в коллекцию, и кажется, что это происходит намного быстрее, если я загружаю файлыв одном потоке, а не в пуле потоков.
Я бы подумал, что это было бы наоборот.
Почему использование нескольких потоков для загрузки файлов в память происходит значительно медленнее, чем если бы я просто перебирал список файлов и загружал каждый файл один за другим в один поток?
Это с C # .net 3.5
Код:
ICollection<XmlDocument> xmlFilesToProcess = new Collection<XmlDocument>();
foreach (FileInfo fileInfo in fileList)
{
ThreadPool.QueueUserWorkItem(
(o) =>
{
XmlDocument doc = new XmlDocument();
doc.Load((string)o);
lock (xmlFilesToProcess)
{
xmlFilesToProcess.Add(doc);
counter++;
}
}, fileInfo.FullName);
}