gpt4 book ai didi

c# - 多线程加载xml文件到内存

转载 作者:行者123 更新时间:2023-11-30 16:29:31 25 4
gpt4 key购买 nike

我有一组 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);
}

最佳答案

不看代码,不好说。如果 XML 的大小和/或数量很小并且您只有一个 CPU,那么可能只是线程之间的上下文切换花费的时间比读取文件所需的时间多。

编辑

现在我看到您创建的线程太多了。我建议你使用TPL的Parallel.For。这适用于 .Net 3.5

参见 http://msdn.microsoft.com/en-us/magazine/cc163340.aspx有关 TPL 的更多信息。

关于c# - 多线程加载xml文件到内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6287213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com