ハンドル欲しいMobile系、Direct3DやShaderなどについて書いています。命令の実行速度を試してみました。3種類をそのままループで回しただけです。dpps単位は時間で値が小さい方が高速です。遅くなってしまい少々焦りました。昨日これで良いって書いたばかりなのに。結局元のコードの方が速いという結果に。極端に速度が落ちています。使おうとしてループの先頭で全部レジスタにロードしていました。その分転送などの命令が他のケースよりも増えています。このテストは局所的な小さいループかつ、使用したデータもストリーム入出力ではなく同じ領域へのたたみ込みでした。それゆえすべてのデータがキャッシュに乗った状態だと考えられます。レジスタ間の転送命令が増えるよりもおそらくキャッシュに乗ったメモリから読み直した方が速いのでしょう。命令が使われるケースだとストリーム処理が多いため、必ずしもこのような結果にはならないと思われます。よって逆転することがわかりました。この両者は比較的似たようなコードに展開されています。ループ内の命令数も同数でした。プロセッサによって異なるため、やはり指針としては命令数を減らすことを考えて書くのが良さそうです。複数の関数に渡って並べ替えなどの最適化が行われています。使わない方が良いかもしれません。