7と8のリビジョン間の差分
2011-06-21 13:07:42時点のリビジョン7
サイズ: 993
編集者: Naoaki Iwakiri
コメント:
2011-07-20 15:55:32時点のリビジョン8
サイズ: 2186
編集者: TakuyaKuwahara
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 12: 行 12:
== ocamloptでのコンパイルについて ==

リバーシAIを強くしようと思ってる人は、なるべく先読みができたほうがいいですよね?

配布されているMakefileではocamlcでコンパイルする設定になっており、バイトコードを生成するようになっていますが、
ocamloptでネイティブコードにコンパイルしたほうが数倍速いです。(自分のプログラムだと大体2手ぐらい多めに読めるようになりました)

ocamloptでコンパイルするには、

・ocamlc -> ocamlopt

・.cma -> .cmxa

・.cmo -> .cmx
と変えればいいはずです。とりあえずコレでコンパイルは通ります(何か問題あったら加筆してください)

==== もうちょい速くしたい? ====

ocamloptでコンパイルするとき、-unsafeオプションをつけると配列の境界チェック等をしなくなるので、多少速くなるそうです。

ただし、配列のインデックスエラーやスタックオーバーフローを起こした時にどうなるかが保証されないため、もしやるなら自己責任で……

関数・論理型プログラミング実験/課題メモ/第8回

boardについて

val init_board

reversi.mliを見ての通り、init_boardは変数です。関数ではないです。0引数関数ではないです。
つまり、当然ながら評価はされません。参照されるだけです。

put_stoneでboardを受け取ってboardを返す際に注意しないとこのinit_boardを編集する事になり、二試合目以降置ける手が無い盤面でスタートする事になります。 -- Naoaki Iwakiri 2011-06-21 12:56:22

ocamloptでのコンパイルについて

リバーシAIを強くしようと思ってる人は、なるべく先読みができたほうがいいですよね?

配布されているMakefileではocamlcでコンパイルする設定になっており、バイトコードを生成するようになっていますが、 ocamloptでネイティブコードにコンパイルしたほうが数倍速いです。(自分のプログラムだと大体2手ぐらい多めに読めるようになりました)

ocamloptでコンパイルするには、

・ocamlc -> ocamlopt

・.cma -> .cmxa

・.cmo -> .cmx と変えればいいはずです。とりあえずコレでコンパイルは通ります(何か問題あったら加筆してください)

もうちょい速くしたい?

ocamloptでコンパイルするとき、-unsafeオプションをつけると配列の境界チェック等をしなくなるので、多少速くなるそうです。

ただし、配列のインデックスエラーやスタックオーバーフローを起こした時にどうなるかが保証されないため、もしやるなら自己責任で……

関数・論理型プログラミング実験/課題メモ/第8回 (最終更新日時 2011-07-20 17:07:24 更新者 TakuyaKuwahara)