前回は、マルチスレッド化した時に浮動小数点演算の関数が高速化されているかどうかを比較してみましたが、今回は処理のデータ数に応じて速度がどう変化するかクロック数を測定して比較してみます。
データ数
測定はすべてCore 2 Duo 2.4GHz(E6600)、Windows XP ProfessionalのPCで行い、一度に処理するデータサイズを256個〜32768個まで変えてみました。
256個
データ数が256個の時、改善率は100%を超える結果になっています。スレッド生成にかかるコスト大きいため、この程度のデータ数では、マルチスレッド化しない方が速いことが分かります。
1024個
改善率は65%とかなり良くなっています。
32768個
改善率は50.9%と2つのコアで処理した時の理想的な値(50%)にかなり近づいています。
最後にデータ数と高速化率のグラフです。256個〜512個の間で高速化し始め、2048個を超えたあたりから高速化率がかなり上がっていることが分かります(横軸はデータ数の対数をとったもの、高速化率は改善率の逆数をとっています。)。