gpt4 book ai didi

c# - Parallel.ForEach 性能不佳

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:24 25 4
gpt4 key购买 nike

我写了一个小程序,可以将一堆文件转换为 pdf。

该程序执行以下操作:

  • 从文件夹中获取一组 FileInfo 对象(10'000 个文档)
  • 对于每个 FileInfo
    • 使用 FileInfo.CopyTo() 创建备份副本,
    • 使用一些 Aspose 库将文档转换为 PDF
    • 转换后,将 PDF 复制到新的目的地
    • 在 foreach 中,WinForm UI 引发并处理一个事件以显示一些进度

根据文档的大小,文档的转换可能需要 0-3 秒。我认为这将是 Parallel.ForEach 的完美候选者,因此我修改了程序。

但是,传统的 foreach 转换需要 1 小时,Parallel.Foreach 转换需要 1.5 小时(我试过的服务器有 2 个 Intel Xeon Procs)。

我做错了什么或者我需要考虑什么以获得更好的性能?

最佳答案

我建议通过查看任务管理器中的 CPU 和资源监视器中的磁盘 I/O 响应时间/队列长度和/或查看各种可用的性能计数器来检查您的操作是否受 CPU 限制或 I/O 限制。

我怀疑您的问题很可能是您现在同时进行多个文件副本(既用于创建备份又用于写入转换后的文件)。与随机访问相比,硬盘的顺序访问(如果您一次只写/读一个文件)要快得多。

关于c# - Parallel.ForEach 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249356/

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