首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以并行方式将数据写入磁盘?

以并行方式将数据写入磁盘?
EN

Stack Overflow用户
提问于 2012-04-21 06:00:52
回答 3查看 3.3K关注 0票数 5

因此,我正在开发一个C++/cli图像处理库,并试图优化我的代码。基本上,我收到了图像的System::Drawing::位图,然后我需要将其写入磁盘,对其执行复杂的分析,并返回分析结果。我认为我可以并行地将图像写入磁盘以加快速度(我的算法不会修改图像)。但是,我并没有太多使用线程的经验,所以我想得到你的意见,告诉我最好的方法是什么。

代码语言:javascript
复制
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;
}

请让我知道你的想法。提前谢谢你!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-21 06:04:10

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

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

票数 7
EN

Stack Overflow用户

发布于 2012-04-21 06:27:44

将磁盘写操作排队到另一个线程似乎是一个好主意,但对于每个磁盘只有一个写线程,这样复杂的分析就可以继续运行,而不会因为磁盘写操作太慢而影响分析。

票数 3
EN

Stack Overflow用户

发布于 2013-08-16 00:50:30

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10254147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档