我有类似于使用openMP的C ++程序
#pragma omp parallel for private(i)
for (j=0;j<NUM_STEPS_J) {
for (i=0;i<NUM_STEPS_I;i++) {
std::cout << "Print some information about step i" << std::endl;
}
std::cout << "Check of item " << j << " finished" << std::endl;
}
在我的情况下提供正确输出的最佳方法是什么?
我知道,使用“printf”代替“cout”可以解决这个问题。
但是当我将“cout”更改为“printf”时,我的程序执行时间从大约80秒增加到大约120秒。 我认为,这对计划的生产力有足够的影响。
没有“printf”解决此问题的最佳方法是什么?
是否可以在输出过程中以某种方式锁定“cout”功能?
答案 0 :(得分:2)
我会惊讶地看到printf
比iostream慢...(考虑到你使用std::endl
来强制刷新缓冲区,我会更加惊讶)但无论如何,你可以使用stringstream
一次构建输出,然后使用已构建的行调用printf
或std::cout <<
一次。