我正在开展一个项目,将大量 TIF 文件(数百万)转换为多页 PDF 文件……我找到了 ImageMagick,我真的很喜欢它的易用性。目前这是用 .NET Core (C#) 编写的,所以我使用的是“Magick.NET-Q8-x64 (7.3.0)”。我想我有两个问题,首先我可以如何以及在哪里优化我的处理以更快地运行?到目前为止,我的解决方案是使用 Parallel.Foreach 并行运行:
Parallel.ForEach(records, (record) => {
convert(record);
});
...
static void convert(MultiPageTiff record)
{
...
//Here I basically do foreach file in multipage tiff
//add to the collection.
//collection.Write(filename.pdf)
...
}
使用我简化的这个解决方案(因为我真正的转换函数有一些字符串操作、文件查找等)运行和转换大约每小时 1500-2000 个 PDF。其中范围的大小但平均约为十页(因此最初是十个 TIF 文件)。
有没有更好的方法可以做到这一点?也许是一种不同的并行执行方法?我运行的硬件是 2x 2.5GHz E5,每个有 6 个内核和 12 个逻辑处理器。我的记忆容量不是问题,但这确实引出了我的下一个问题。
目前我的处理峰值约为 6-7Gb 的内存!这是正常的吗?我知道对于 8 位版本的 IM,每个转换的像素都需要一个字节,导致 1700x2200 TIF 文件大约需要 3.7Mb。
任何提示将非常感谢!