5

所以我正在开发一个 C++/cli 图像处理库,并试图优化我的代码。基本上,我传递了一个图像的 System::Drawing::Bitmap,然后我需要将其写入磁盘,执行复杂的分析,并返回分析结果。我认为我可以将图像并行写入磁盘以加快速度(我的算法不会修改图像)。但是,我没有过多地使用线程,所以我想就如何做到这一点的最佳方式征求您的意见。

string ProcessImage(System::Drawing::Bitmap ^bmp, System::String^ targetFile)
{
    bmp->Save(targetFile);
    System::Drawing::Bitmap^ bmp8 = BitmapConvertPixelFormat(bmp, 8); //<-- a function I wrote which converts the 32bpp I am passed into an 8bpp one
    string results = Analyze(bmp8); //<--- takes a good bit of time
    return results;
}

请让我知道你的想法。先感谢您!

4

3 回答 3

7

对单个机械磁盘进行并行写入/读取并不是一个好主意,因为机械头每次都需要旋转以服务于 I/O 请求,因此使用多个线程只会不必要地反弹它并产生开销。

您可以尝试进行一些基准测试,但恐怕您只能求助于使用单个线程并按顺序编写。

于 2012-04-20T22:04:10.093 回答
3

将磁盘写入排队到另一个线程似乎是一个好主意,但每个磁盘只有一个写入器线程,这样复杂的分析就可以在没有慢速磁盘写入的情况下继续运行。

于 2012-04-20T22:27:43.740 回答
1

如果值得的话,您可以花一些时间来了解如何使用Parallel HDF5。它可以并行写入文件。

于 2013-08-15T16:50:30.390 回答