因此,我正在开发一个C++/cli图像处理库,并试图优化我的代码。基本上,我收到了图像的System::Drawing::位图,然后我需要将其写入磁盘,对其执行复杂的分析,并返回分析结果。我认为我可以并行地将图像写入磁盘以加快速度(我的算法不会修改图像)。但是,我并没有太多使用线程的经验,所以我想得到你的意见,告诉我最好的方法是什么。
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;
}请让我知道你的想法。提前谢谢你!
发布于 2012-04-21 06:04:10
并行写入/读取单个机械磁盘并不是一个好主意,因为机械磁头每次都需要旋转以服务于I/O请求,因此使用多个线程只会使其不必要地反弹,并增加开销。
您可以尝试进行一点基准测试,但我担心您只能求助于使用单个线程并按顺序编写。
发布于 2012-04-21 06:27:44
将磁盘写操作排队到另一个线程似乎是一个好主意,但对于每个磁盘只有一个写线程,这样复杂的分析就可以继续运行,而不会因为磁盘写操作太慢而影响分析。
发布于 2013-08-16 00:50:30
如果这是值得的,您可以花一些时间来了解如何使用Parallel HDF5。它可以并行地写入文件。
https://stackoverflow.com/questions/10254147
复制相似问题