【发布时间】:2013-08-16 00:50:30
【问题描述】:
所以我正在开发一个 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;
}
请告诉我你的想法。 提前谢谢!
【问题讨论】:
-
需要更多规范。您是要 (1) 写入在分析开始之前可用的数据,(2) 在分析进行时写入由分析生成的数据,还是 (3) 写入仅在分析完成后才可用的数据?还是完全不同的东西?
-
@JustJeff:从他提供的示例代码来看,我相信是 (1) 的情况。这是一个微不足道的情况,线程可以在没有太多工作的情况下提供帮助。
-
@LieRyan - 同意。仍然希望OP确认
-
这毫无意义。您可能有多个内核,但仍然只有一个磁盘。当图像不超过 1 GB 左右时,它仍然是内存到内存的副本,具体取决于文件系统缓存的大小。
标签: multithreading image-processing c++-cli