私はparallel_for fnc呼び出しに変換したいforループを持っています。私のコードはこの変換が成功するためのすべての基準(Parallel_Programming_with_Microsoft_Visual_C_plus_plus、p.7で説明されています)を満たしていますが、実装が難しいと感じています。ここに私の例があります:ループをparallel_for fncの呼び出しに変換することはできますか?
numbers_from_file_からの数字の各ペアが掛け合わされ、results_に格納されるというシナリオです。それを動作させるためには、変数iを2つ増分しなければならない(別の対にスキップする)。残念ながら、この本の例では、forループのbodyをparallel_for fncの呼び出しに変換する方法を示しています。
ループをparallel_for fncの呼び出しに変換することはできますか?
本当にあなたのコードですか、それとも単なる例ですか?それがあなたのコードなら、スレッディングはあなたのパフォーマンスを傷つけるでしょう。助けてはいけません。スレッドを生成するオーバーヘッドがあります。一般的には、スレッド化が勝つためには、オーバーヘッドのコストよりも多くの作業をスレッドで行う必要があります。そして、バッファに格納されている数を一緒に乗算するのはそれではありません。それらの数値が 'Big_Int'クラスであっても、それらを乗算するのにかかる時間は無視できます。これを数のグループに分割し、一緒に積み重ねることで、各スレッドが多数の乗算を行うようにする必要があります。 –
@smallB - これはあなたがこの質問のために考え出すのに最適なタイトルですか? – razlebe
@ニコルあなたが言っていることは事実かもしれません。おそらくこの例では本当です。実際には、私はそれらのことについて学びたいと思っています。そして、私はperfについてはあまり気にしません。あなたの入力をありがとう。 – smallB