本当の原因

昨日条件分岐が問題ではないかと言ったが、実際は条件分岐を削ると特定の(軽い)パターンを繰り返すために速くなったように見えただけだった。
そして考えてみれば、5Mnpsというのは1ノードあたり640クロックの消費ということになる。
着手可能位置の検出が200クロック前後ということを考えると、現実的にはこれ以上は難しいのではないだろうか。
少なくとも今のデータ構造とアルゴリズムのままでは10Mnpsにする事は不可能だと思う。

それでもしつこく速くする手段として、石の反転を石の位置によって最適化する方法を試みてみた。
しかしこのためには石の位置を判定して分岐しなければならない。
盤を5つのブロックに分け、それぞれの関数を作成して計測したところ、元の方法よりも1割遅くなってしまった。
昨日の見積もりは間違っていたとはいえ、条件分岐が遅いことには変わりないようだ。
関数ポインタを使えば速くなるのだろうか?あまり期待はできないが、粘ってみたい。