访问图像文件以提高性能的最佳方式

时间:2015-05-22 05:36:59

标签: c# vb.net image performance command-line-arguments

我正在使用 graphicmagick.exe (命令工具)将文件从一种格式转换为另一种格式:在那种情况下,我曾经将输入路径和输出路径作为结果传递给转换。现在我使用foreach循环一个目录并逐个传递输入文件并转换为另一种格式。

但它会影响性能。有没有更好的方法来提高性能?请建议我。

2 个答案:

答案 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
    ...
});

在这种情况下,将加载所有处理器内核。否则只有一个。 但请记住,你在内部编码并行块必须是线程安全的,而不是相互阻塞。