忍者ブログ

[PR]

2017.12.16 -
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

   ▲ENTRY-TOP

オセロ終盤解析 C vs Java

2011.11.13 - その他
久しぶりの投稿です。
気がついたら、前回の投稿に宣伝が勝手に貼られていた・・・。
しばらく更新しない内に仕様が変わったみたいですね。
無料のサイトだからね・・わかっていたけど。

さて、本題に移ります。
ここしばらく、オセロの終盤解析エンジンJava版に手をつけていました。
いずれHamliteに解析機能つける予定だったので。

それでですね、終盤解析エンジンとして有名なオープンソースのsolver.cをベースに
Java版への移植にチャレンジしたわけです。ようやく移植が完了したので速度の実験
をしました。題して「オセロ終盤解析 C vs Java」
実行速度が遅いと言われているJavaでどの程度速度が出せるか・・・という実験です。
移植の出来具合で若干速度にも影響ありますので、今回の結果はご参考までに。

簡単に言ってしまうと。Cの方がJavaより2.2倍から2.5倍速いっていう結果がでました。

Cの方は最適化オプションをつけてコンパイルしてあります。
Javaの方は、JITの性能頼みです。Javaのバージョンは、Java6のアップデート29。
Java版でコーティング上で不利だったのが、マクロ定義が使えないことです。Cでは
マクロ使いまくりで、インラインにバンバンコートが書かれています。Javaに移植する
際には、それらのマクロを展開してコードを貼っていくのですが、展開しすぎると読み
ずらくて、デバッグに支障をきたすので、Java版ではある程度の単位で関数化して
コールする形に変更するわけです。この変更の分、余計な処理時間がかかり遅く
なってしまうというのがあります。
また、今回はなるべくCのオリジナルに忠実に移植しているので、Javaの特性に合わ
ない部分もありそうです。例えば、Cのchar型は、Javaのbyte型に変換していたりする
のですが、ある書籍の記述には、Javaではint型に統一して書いたほうが速度が早い
との実験結果があるとかないとか。
時間がとれたら、ちょっとチューニングしてみようかと思っています。

「テスト環境」
VAIO VGN-TZ93S (数年前のノートPC)
Windows Vista SP2 32bit版
CPU Core2 U7700 1.33GHz
メモリ 2GB
※あえてロースペックの端末で評価しています。

「速度対決結果」
FFOテストの#40-#44までを実行。

-- オリジナルのsolver.c --
 # |depth|score|   principal variation   |   time    | nodes (N)  | speed (N/s)
-------------------------------------------------------------------------------
  1|  20 | +38 | A2 b1 C1 ps B6 c7 A7 b7 | 0:00:11.4 |   44010270 |   3833647
  2|  22 | +00 | H4 a3 A2 g6 G5 g7 F8 h6 | 0:00:20.3 |   75208999 |   3697046
  3|  22 | +06 | G2 h1 C2 g1 F1 d2 B2 a2 | 0:00:22.8 |   94482406 |   4141059
  4|  23 | -12 | c7 H4 h5 B8 b7 A8 a7 A5 | 0:01:02.1 |  206006535 |   3313067
  5|  23 | -14 | b8 G5 d2 A3 b7 A8 a7 C8 | 0:00:51.6 |  171015851 |   3312592
-------------------------------------------------------------------------------
ffo40-44.scr : 590724061 nodes in 0:02:48.4 3506925 nodes/s.
 
-- solver.cのJava移植版 --
 # |depth|score|   principal variation   |   time    | nodes (N)  | speed (N/s)
-------------------------------------------------------------------------------
  1|  20 | +38 | A2 b1 C1 ps B6 c7 A7 b7 | 0:00:25.2 |   44043957 |   1741763
  2|  22 | +00 | H4 a3 A2 g6 G5 g7 F8 h6 | 0:00:50.7 |   75273900 |   1484282
  3|  22 | +06 | G2 h1 C2 g1 F1 d2 B2 a2 | 0:00:54.9 |   94524716 |   1721668
  4|  23 | -12 | c7 H4 h5 B8 b7 A8 a7 A5 | 0:02:30.9 |  206071839 |   1365284
  5|  23 | -14 | b8 G5 d2 A3 b7 A8 a7 C8 | 0:02:01.8 |  171106287 |   1403891
-------------------------------------------------------------------------------
ffo40-44.scr : 591020699 nodes in 0:06:43.7 1463934 nodes/s.


拍手[0回]

PR
   Comment(2)   TrackBack(0)    ▲ENTRY-TOP

Comment

Hamlite 重大エラーの報告 - ばっしぃ

お世話になっております。
Hamliteをご利用させて頂いております。ばっしぃと申します。
いつもありがとうございます。

この度は、貴方が発行しているHamliteにおきまして、重大なエラーが確認されましたので、ご連絡させていただきました。

エラーの内容。
盤面が表示されない。

http://bassy84.net/zyoseki-s-tamenorirose.html ←ここの下部で検証中
私の運営しているサイトにタグを少しずつ変更しながら検証していきますと、

貴URLの左側フリーエリア
http://hamlite.blog.shinobi.jp/
に設置されていますiframe内タグをそのまま掲載すれば表示可能ですが、
&start_mode=auto

&start_mode=kifu
にすると表示されなくなります。

また、
&comment
を導入しても、表示されないことが確認できました。

これはバージョン1.5に関しての内容でしたが、
バージョン1.3(私が今利用しているもの)でも同様に表示されません。

この原因につきまして、お手数掛けますが、ご確認願えますでしょうか。
よろしくお願いいたします。
2011.11.20 Sun 13:10 URL [ Edit ]

Hamlite動作確認 - 開発者

はっしぃさん、こんばんは。
ご報告の件、こちらでも検証をはじめました。
フリーエリアのものを&kifuに変更しましたが、こちらは正常に表示されるようです。ただ本文にテストで貼ると表示がでない現象が見られます。貼り込む場所によって同じコードでも動作が違うようです。
もしかしたら、ブログサイトが持つのセキュリティ制限が関係しているのかもしれません。他のパターンでも調べてみます。
※iframeは他のページにアクセスできるタグなので、セキュリティ的に問題が指摘されていて、本文に貼れないブログサイトが多いのです。
2011.11.20 Sun 23:45 [ Edit ]
コメントタイトル:
投稿者名:
Mail:
URL:
投稿内容:
Password: ※1
Secret: 管理者にだけ表示を許可する※2
※1 パスワードを設定するとご自分が投稿した記事を編集することができます。
※2 チェックを入れると管理者のみが見ることのできるメッセージが送れます。

TrackBack

この記事へのトラックバック
TrackBackURL
  →
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
フリーエリア

【Hamlite v1.60】

最新CM
[05/16 backlink service]
[11/23 開発者]
[11/22 はせら]
[11/20 開発者]
[11/20 ばっしぃ]
最新TB
プロフィール
HN:
K.Kawami
性別:
非公開
ブログ内検索
忍者アド