【发布时间】:2012-09-03 14:01:23
【问题描述】:
我写了一个小程序,可以将一堆文件转换为 pdf。
程序执行以下操作:
- 从文件夹中获取
FileInfo对象数组(10'000 个文档) - 对于每个
FileInfo- 使用
FileInfo.CopyTo()创建备份副本, - 使用一些 Aspose 库将文档转换为 PDF
- 转换后,将 PDF 复制到新的目标位置
- 在 foreach 内部,一个事件被引发并由 WinForm UI 处理以显示一些进度
- 使用
根据文档的大小,文档的转换可能需要 0-3 秒。
我认为这将是Parallel.ForEach 的完美候选,所以我修改了程序。
但是,转换需要 1 小时而不是传统的 foreach 1.5 小时 Parallel.Foreach(我试过的服务器有 2 x Intel Xeon Procs)。
我做错了什么或者我需要考虑什么才能获得更好的性能?
【问题讨论】:
-
如果您发布了代码,它可能会帮助我们找出问题所在...
-
为什么原始代码需要1小时?它是否一直使用 100% 的单核?还是受到硬盘速度的限制?
标签: c# .net performance parallel-processing parallel.foreach