我正在使用 graphicmagick.exe (命令工具)将文件从一种格式转换为另一种格式:在那种情况下,我曾经将输入路径和输出路径作为结果传递给转换。现在我使用foreach循环一个目录并逐个传递输入文件并转换为另一种格式。
但它会影响性能。有没有更好的方法来提高性能?请建议我。
答案 0 :(得分:1)
检查http://www.graphicsmagick.org/FAQ.html#how-can-i-process-many-files-at-once
我认为你的代码会在每个代码上执行应用程序。所以,它非常昂贵。该应用程序具有多文件处理选项。首先检查每个文件,而不是执行应用程序的代码。与每个文件启动一个进程相比,启动一个进程并对映像应用更改是不同的。
如果仍需要在C#上执行,请更改代码以使用Parallel.Foreach而不是foreach,并检查执行中是否有增益。尝试使用一个示例,可能是目录中的50-100个文件,并检查两个实现之间的执行时间。
问候和祝你好运!
答案 1 :(得分:1)
使用Parallel类(ForEach或For)。
Parallel.ForEach(files, file =>
{
// do something with file
...
});
在这种情况下,将加载所有处理器内核。否则只有一个。 但请记住,你在内部编码并行块必须是线程安全的,而不是相互阻塞。