Zebraを目指して

一つのFFOテストで性能を評価するのはまずいなと思って,他のも試してみた。ということで,#41とか。。。終わらない。どうやら,枝刈り率が終わってるかんじだ。はう。やはり,mobilityによるソートなんてやらないで,まじめにshallow searchしないといけないか。#40の枝刈りが異常によいのはただの偶然であったことが証明された。
いったい何をどうすれば速くなるのだろうか。ということで,Zebraのendgame.cを読んでみる。っていうか,これってホントにZebraに使われているソースなのか? 1999ってかいてあるゾ。しかし,こういう古典的なアンロールとかで十分速くなるんだろうなぁとか。脇に置いてあったMMX命令だらけのアセンブリソースは使ってるっぽい。んで,何をしてるのか見たところ,どうもmobilityを計算しているようだ。手法は自分のと基本的に同じ。。。だと思う。よめん。
それはそうと,c33とかc55ってなんのことだろうと気になった。立っているビットを数えるのに使っているのだが?? で,ぐぐったら。

http://www.st.rim.or.jp/~phinloda/cqa/cqa15.html#Q2

なんと。こんな手法があったとは。ビットのカウントはいろんなところに点在しているので,かなり速度向上するのではないかと予想するも72sec。ありえんありえん。なんで?? と思って,.asmみたら,inline展開されてない。ぉぃ。マジかよ。ついでに,Zebraの該当箇所より2,3倍のソース長になってるし。自動でMMX使ってくれないのか。あのコンパイラオプションはなんなんだ?