Benchmark for Gameboy


img
友好数、友愛数、親和数(amicable number) というものを探索してみるプログラムです。

友愛数(Wikipedia) -> https://ja.wikipedia.org/wiki/%E5%8F%8B%E6%84%9B%E6%95%B0

定義としては「異なる2つの自然数の組で、自分自身を除いた約数の和が、互いに他方と等しくなるような数」だそうです。
無限に探索するとキリが無いので 10000 以下の数値に限定して探索を行います。
ベンチマーク的な CPU の性能指標として作った物です。




■ 本体とソースファイル



エミュレータでの実行画面です。

起動して何かボタンを押すと音が鳴って計算を開始します。
結果が出るたびに音が鳴ります。時間は手動計測になります。
下に掲載した結果は実機で実行中の音を録音ソフトで拾って時間計測しました。ほぼ正確だと思います。


ソースリスト付き ROM ファイルfnum_gb.zip (10KB)

■ 結果

【メーカー】任天堂
【機種名】ゲームボーイ
【CPU】LR35902(Z80カスタム)
【クロック数】4MHz
【メモリ】32KB ROM
【言語】機械語(アセンブラ)
【プログラムの変更点】110行の「FOR J=2 TO 1000」を、「FOR J=2 TO 10000」相当に修正。
▼スコア
【220,284】4秒6
【1184,1210】2分14秒8

※実機を用いた計測結果です。

速度が遅いので 10000 までの探索の最後を見届けるためにはエミュレータでの実行をお勧めします。
BGB エミュレータの場合、実行速度加速はテンキーの「+」キーがデフォルト設定になっています。
オプション「Misc」の右下にある「Fast forward speed」を 100 くらいにしておいてもなお遅いです。


▲ TOP