2012/05/10

C vs C++ for Chess

チェスプログラムを敢えてCで書いてきた。それの理由のひとつは、Shannonの論文中で関数F1, F2のように書かれていることからも、間違いなくオブジェクト指向では書いてないということがある。そもそもAlgol以前かな?しかしそれ以上に、Cの方がC++より速いという神話は本当か?という疑問を確認したいからという動機があった。

というわけで、単純な実験としてプログラムをCとC++でコンパイルしてみて実行速度を計測してみた。まだ、思考ルーチンは書いていないが、一番、ベースになる駒の動きの部分のスピードは常に効いてくるので、今の段階での比較には意味がある。

計測は、random player vs random playerの対戦(決着がつかないため99手で打ち切り)の1万回の実行をgettimeofdayによるwall clockの計測。 また乱数の引きの影響を受けないために最初にsrand(1)に固定している。

Cによる結果

C++による結果

有意な差はなさそう。むしろ、この結果だけをみたらgccよりg++の方が速い。

というわけでCの方が速いは迷信だろうというのが、ここでの結論。ただし、g++でコンパイルしただけで、C++らしいコードになっていないので、それについては、これから書きなおしてみて、再度、計測することにする。

0 件のコメント:

コメントを投稿