Chiharu の日記

絵描き C/C++ プログラマーの日記です。

Parallel force - パラレル・フォース 〜ちょっと高速化。その 4 (SSE2)

ふとコードを見返したら、イメージの転送元フォーマットが BGR 時、読み込みと BGR / BGRX 変換にて、SSE2 が使えることに気づきました。対応したサンプルをアップしました。

  • pforce_1.exe … 単一スレッド処理。(15fps)
  • pforce.exe … 複数スレッド処理。(62fps)
  • pforce_loop.exe … 複数スレッド処理、ループ展開。(70fps)
  • pforce_loop_alpha.exe … 複数スレッド処理、ループ展開、ブレンド処理最適化 (C++)。(81fps)
  • pforce_loop_sse2.exe … 複数スレッド処理、ループ展開、ブレンド処理最適化 (SSE2)。(125fps)
  • pforce_loop_sse2_load.exe … 複数スレッド処理、ループ展開、ブレンド処理最適化、読み込み処理最適化 (SSE2)。(166fps)

結果、166fps になりました。挙動を見ると、CPU 使用率が 70% 程度まで落ちており、また、処理速度の変動が激しいことから、各描画スレッドにおける表画面への転送ボトルネックが少しずつ露呈してきたように思います。ま。とりあえず高速化はこんなところで打ち止めです。相方から『その雪、降りすぎじゃね?』との指摘も入りましたので。
※現在はサンプルを公開していません。