0

私は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;
}

私の場合、正しい出力を提供する最良の方法は何ですか?

「cout」の代わりに「printf」を使用すると、この問題が解決することはわかっています。

しかし、「cout」を「printf」に変更すると、プログラムの実行時間が約 80 秒から約 120 秒に増加しました。プログラムの生産性に十分な影響を与えていると思います。

「printf」なしでこの問題を解決する最良の方法は何ですか?

出力中に何らかの方法で「cout」機能をロックすることは可能ですか?

4

1 に答える 1

2

iostreams よりも遅いことに驚かれることでしょう... (そして、バッファの強制フラッシュをprintf使用していることを考えるとなおさらです)、いずれにせよ、 a を使用して一度に出力を作成し、いずれかまたは一度呼び出すことができますすでに構築されたラインで。std::endlstringstreamprintfstd::cout <<

于 2012-06-12T19:02:26.820 に答える