« アルファブレンドを計る | メイン | マルチスレッドにしてコピー »

2007年08月19日

グラフィックライブラリ:: 小さく区切ってコピー

    

テンプレートのインライン展開と最適化アルファブレンドを計る でソースが間違っていたので、再計測して修正した。後、MMX と SSE2 のソースも直した。
で、今度は少しずつコピーする方法を試した。
800*600 32bit の画像 5枚を10回コピーしているので、5枚のコピーの時に1ラインずつに分けてコピーするようにしてみた。 50回分まとめてもいいけど、そこまでするとあんまり現実性もないかと思ってこうした。
で、以下がその結果。
分けてコピーしたものと、分けずにコピーしたものを並べている。

単純コピー - 66 msec, 112 msec, 1.7倍
ブレンド非SIMD - 158 msec - 210 msec, 1.3倍
ブレンドMMX - 89 msec - 128 msec, 1.4倍
ブレンドSSE2 - 89 msec - 127 msec, 1.4倍

かなり速くなった。
少しずつコピーするのは面倒だから別にいいかなぁと思っていたが、やったほうが良さそうだな。
でも、見てわかるように MMX と SSE2 ではほとんど差がない。
前も書いた気がするけど、やはりSSE2 は MMX を2回呼んでるだけか。
Athlon じゃなくて、Core 2 Duo とかだと速くなったりするのだろうか?
SSSE3とは を見てみると、以下のような記述がある。
-- 以下引用 --
 ちなみに、SSSE3自体の特徴ではないが、SSE3対応プロセッサは128ビットを同時に処理する命令を実行しても内部的には64ビット長のALUを利用して2回の処理で行なわれていたが、Intel Core 2シリーズではALUが128ビット長となり、同時に128ビットを処理できるようになっている。
-- 引用終わり --
やはり、Core 2 Duo を使うと倍速になるのかな。

もっと速くする方法はマルチスレッドかな。
マルチコアならば、コア数分速くなるはず。


関連記事・続きの記事

アルファブレンドを Core 2 Duo で計る
他でちょっと疑問に思うことがあったので、Core 2 Duo で SSE2 の効... [続きを読む]


投稿者 Takenori : 2007年08月19日 13:09




comments powered by Disqus
Total : Today : Yesterday : なかのひと