asm

u-no2004-08-28


ZebraやNtestのソースを読みながら,気になっていたmobility計算のインラインアセンブラの部分をちゃんと見てみると,自分の方法と同じだった。やはりMMXでごり押しは有効なのか? とおもって,自分のmobility計算にアセンブリを使ってみよう。んで,ゴリゴリ。左右を間違えて,時間食ったが完成。どうだ? 劇的に速くなるか? 65.8sec。なんもかわんねぇ。そもそも,出力されたasmファイルにMMX命令がなかったので,コンパイラMMX命令をはかないと勝手に考えていたが,ひょっとしたらそこからアセンブル(?)するときに可能な限りMMX命令に置き換えてるとかあるのか? ということで,コンパイラオプションでブレンドPen4を切り替えてみて,ビルド。結果。ブレンド:66.6sec,Pen4:64.3sec。チョット改善されている。。。ような。誤差の範囲か?
それにしても,オレもアセンブリなんか書くようになったか。1年前じゃ考えられん。まぁ,しかし。あんまはやくなんねぇなぁ。それから,置換表の使い方が微妙なんだよな。今のままだと有用なデータを上書きされうるし。
Ntestソースのメモ:着手可能箇所をビット演算でビットセット形式に取得。バイナリサーチで次の着手可能箇所の取得,フリップ。フリップは事前に大量生成された関数を1発ポンと呼ぶだけっぽいが,どれを呼ぶかどうやって決めているのか不明。