我有一组XML文件,我希望将其加载到内存中以进行处理.
我正在将文件加载到Collection中,如果将文件加载到单个线程中而不是使用线程池,则似乎要快得多.
我本以为这会是另一回事.
为什么使用多个线程将文件加载到内存的情况比我仅遍历文件列表并在单个线程中一个接一个地加载每个文件的情况要慢得多?
这是与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);
}
解决方法:
如果没有看到代码,我想可能与以下事实有关:从磁盘读取是操作的较慢部分.由于磁盘实际上一次只能读取一个文件,因此磁盘成为了瓶颈.