我想逐个像素地迭代图像并每个像素执行 1000 次浮点运算。您认为我应该为此使用多线程还是多处理,即 boost::thread 或 OpenMP?是否有经验可以在这两个之间进行选择(以获得最快的速度)?我知道创建线程或在线程之间切换比创建/切换进程快几倍。另一方面,实现 OpenMP 代码要容易得多。
我现在的解决方案:
#pragma omp parallel for
for(size_t i=0; i<640; ++i) {
for(size_t j=0; j<480; ++j) {
// do 1000 float operations
}
}