番外編:ASCIIART(マンデルブロ集合)ベンチマーク


最近 Twitter に流れている、ASCIIART(マンデルブロ集合)ベンチマークに興味を持ち、手持ちの機材(の一部)とエミュレータを利用して測定してみました。
まだ暫定版でして、特に各機種での実行については最適化されていないと思います。関係各位の忌憚なきアドバイスをいただければ幸いです。
本ページにおけるエミュレータでの実行・画面キャプチャについては、XM7ePC-8801MA, ePC-8001mkIISR および eX1(turbo)、および mbs1(model05) emulator を使用させていただきました。PI.さん、たけがみりうさん、Takedaさん、Sasajiさん、いつも感謝しております。
そして今回も実機検証に関して Fukui Toshioさん、apaslothyさんに多大なご協力をいただきました。大変感謝しております。
また、FM-7(77)の性能を大幅に向上させる HD63C09カードを開発された ikkeiさんに敬意を表します。
お急ぎの方へ。
ASCIIART(マンデルブロ集合)とは
MBASICでベンチマークを実施
各社BASICでベンチマークを実施
ベンチマーク用データ一式(CP/M用、各社BASIC用)


ASCIIART(マンデルブロ集合)とは
●2017年に RBC (RetroBrew Computers) Forum で CP/M-68K の移植に関するトピックスに流れていたもので、 Plasmo さんが作成されたプログラムのようです。

asciiart_0
・プログラムはこんな感じです。(XM7でキャプチャしています。)
プログラム内容としては、マンデルブロ集合(でない部分の発散するまでの計算回数)を 英数字でプロットしています。(0〜F の16段階)
<計算範囲、条件>
 X方向(実部):-1.7862〜1.7862, 0.0458刻み
 Y方向(虚部):-0.99996〜0.99996, 0.08333刻み
 Max計算回数:16
マンデルブロ集合に関してはこのサイトに丁寧な解説があり参考になりました。
またこのサイトで、実に多様な言語(100種類!)でマンデルブロ集合をやっていて感心した次第です。
他の言語と比較する場合には、上記の<計算範囲、条件>を合わせた方がいいと思います。

asciiart_1
・実行結果はこんな感じです。(XM7でキャプチャしています。)


RBC Forumに掲載されてた実行結果の一部です。
機種(CPU) モード他 BASIC / OS 実行結果 オーナー      1     2
Z8S180 33MHz MBASIC 4.51 / CPM-80 0:32 wsmさん グラフ(32)
MBASIC 5.21 / CPM-80 0:30 グラフ(30)
BASCOM / CPM-80 0:12 グラフ(12)
Z80 10MHz MBASIC 5.21 / CPM-80 1:54 norwestrzhさん グラフ(114)
68000 6MHz CB68 / CPM-68K 0:32 グラフ(32)
12MHz EhBASIC / CPM-68K 1:26 グラフ(86)

MBASIC で ASCIIARTベンチマークを実施(中)
●まずは、RBC Forum に出て来た CP/M-80(or MSX-DOS)上で動作する MBASIC(Microsoft BASIC-80) V5.2x にて ASCIIARTベンチマークをエミュレータと実機で実施してみました。
(測定は、手持ちのストップウォッチにて行いました。なので1秒未満の誤差はご容赦。)
今回、Fukui Toshioさんより MZ-80B、MZ-2000、MZ-2521、MZ-2861、X1turboZ, PC-8801MA, PC-8001mkII の実機で検証していただけました。
ご協力に感謝します。

エミュレータ編
エミュレータ モード他 BASIC / OS 実行結果 備考・ご協力      5    10    15
No T.A. W/ T.A.
eX1 170416 MBASIC 5.21 / Sharp 60K CP/M for X1 Rel. 1.0 - 4:49 グラフ(5)
eX1turboZ 180524 MBASIC 5.22 / Sharp 60K CP/M for X1 Rel. 1.0 - 4:49 Fukui, Toshioさん グラフ(5)
15KHz, 24KHz MBASIC 5.22 / Sharp 56K CP/M for X1turbo Rel. 1.0 - 4:58 グラフ(5)
ePC-8801MA
171215
4MHz, V1S (->N) MBASIC 5.21 / MSA 58K CP/M for 8801 "2.2A" 7:25 - グラフ(7)
4MHz, V1H (->N) MBASIC 5.21 / MSA 58K CP/M for 8801 "2.2A" 5:05 - グラフ(5)
4MHz, V1S MBASIC 5.21 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 9:18 グラフ(9)
4MHz, V1H MBASIC 5.21 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 5:48 グラフ(5)
4MHz, V1S +NEW ON 1 MBASIC 5.21 / MSA 56K CP/M for 8001 "2.2B" (2D) 7:27 - グラフ(7)
4MHz, V1H +mon G77A8 MBASIC 5.21 / MSA 56K CP/M for 8001 "2.2B" (2D) 5:06 - グラフ(5)
4MHz, V1S +NEW ON 1 MBASIC 5.21 / NEC 56K CP/M for 8001 (2D) 7:16 8:04 グラフ(7)グラフ(8)
4MHz, V1H +mon G77A8 MBASIC 5.21 / NEC 56K CP/M for 8001 (2D) 4:57 5:23 グラフ(5)グラフ(5)
4MHz, V1S MBASIC 5.21 / MSX-DOS for 8801 - 7:29 グラフ(7)
4MHz, V1H MBASIC 5.21 / MSX-DOS for 8801 - 5:01 グラフ(5)
ePC-8001mkIISR
160323
N MBASIC 5.21 / MSA 56K CP/M for 8001 "2.2B" (2D) 7:50 - グラフ(7)
N MBASIC 5.21 / NEC 56K CP/M for 8001 (2D) 7:39 8:30 グラフ(7)グラフ(8)
XM7pure V1.1
L77SX+r01
FM-77, Green Mode MBASIC 5.21 / Fujitsu 56K CP/M for FM-77 L2.0 5:24 5:24 グラフ(5)
FM-77, Color Mode MBASIC 5.21 / Fujitsu 56K CP/M for FM-77 L2.0 5:24 5:24 グラフ(5)
実機編
機種 モード他 BASIC / OS 実行結果 ご協力      5    10    15
No T.A. W/ T.A.
MZ-80B MBASIC 5.22 / MSA 60K CP/M 2.2A Rev.1.1.5 5:23 - Fukui, Toshioさん グラフ(5)
MZ-2000 MBASIC 5.22 / MSA 60K CP/M 2.2A Rev.1.1.5 5:23 - Fukui, Toshioさん グラフ(5)
MZ-2521 80Bモード 4MHz 24KHz=15KHz MBASIC 5.22 / MSA 60K CP/M 2.2A Rev.1.1.5 5:27 - Fukui, Toshioさん グラフ(5)
2000モード 4MHz 24KHz=15KHz MBASIC 5.22 / MSA 60K CP/M 2.2A Rev.1.1.5 5:27 - グラフ(5)
80Bモード 6MHz 24KHz MBASIC 5.22 / MSA 60K CP/M 2.2A Rev.1.1.5 4:08 - グラフ(4)
2000モード 6MHz 24KHz MBASIC 5.22 / MSA 60K CP/M 2.2A Rev.1.1.5 4:08 - グラフ(4)
2500モード 6MHz 24KHz=15KHz MBASIC 5.22 / Sharp P-CP/M V1.0 (MZ-6Z001 V1.0A) 4:08 - グラフ(4)
MZ-2861 2500モード 6MHz 24KHz MBASIC 5.22 / Sharp P-CP/M V1.0 (MZ-6Z001 V1.0A) 4:08 - Fukui, Toshioさん グラフ(4)
X1turboZ MBASIC 5.22 / Sharp 60K CP/M for X1 Rel. 1.0 - 4:49 Fukui, Toshioさん グラフ(5)
15KHz, 24KHz MBASIC 5.22 / Sharp 56K CP/M for X1turbo Rel. 1.0 - 4:58 グラフ(5)
PC-8801MA 4MHz, 15KHz, V1S +NEW ON 1 MBASIC 5.22 / MSA 58K CP/M for 8801 "2.2A" 8:04 - Fukui, Toshioさん グラフ(8)
4MHz, 15KHz, V1H +mon G77A8 MBASIC 5.22 / MSA 58K CP/M for 8801 "2.2A" 5:04 - グラフ(5)
4MHz, 24KHz, V1S +NEW ON 1 MBASIC 5.22 / MSA 58K CP/M for 8801 "2.2A" 7:40 - グラフ(7)
4MHz, 24KHz, V1H +mon G77A8 MBASIC 5.22 / MSA 58K CP/M for 8801 "2.2A" 5:05 - グラフ(5)
8MHz, 24KHz, V1S +NEW ON 1 MBASIC 5.22 / MSA 58K CP/M for 8801 "2.2A" 4:08 - グラフ(4)
8MHz, 24KHz, V1H +mon G77A8 MBASIC 5.22 / MSA 58K CP/M for 8801 "2.2A" 3:15 - グラフ(3)
4MHz, 15KHz, V1S MBASIC 5.22 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 10:59 グラフ(11)
4MHz, 15KHz, V1H MBASIC 5.22 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 5:49 グラフ(5)
4MHz, 24KHz, V1S MBASIC 5.22 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 9:30 グラフ(9)
4MHz, 24KHz, V1H MBASIC 5.22 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 5:48 グラフ(5)
8MHz, 24KHz, V1S MBASIC 5.22 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 4:32 グラフ(4)
8MHz, 24KHz, V1H MBASIC 5.22 / NEC 56K CP/M for 8801mkII CBIOS 3.2 - 3:26 グラフ(3)
4MHz, 15KHz, V1S, NEW ON 1 MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 8:01 - グラフ(8)
4MHz, 15KHz, V1H +mon G77A8 MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 5:05 - グラフ(5)
4MHz, 24KHz, V1S, NEW ON 1 MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 7:42 - グラフ(7)
4MHz, 24KHz, V1H +mon G77A8 MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 5:06 - グラフ(5)
8MHz, 24KHz, V1S, NEW ON 1 MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 4:10 - グラフ(4)
8MHz, 24KHz, V1H +mon G77A8 MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 3:16 - グラフ(3)
4MHz, 15KHz, V1S, NEW ON 1 MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 7:50 8:44 グラフ(7)グラフ(8)
4MHz, 15KHz, V1H +mon G77A8 MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 4:57 5:22 グラフ(5)グラフ(5)
4MHz, 24KHz, V1S, NEW ON 1 MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 7:31 8:21 グラフ(7)グラフ(8)
4MHz, 24KHz, V1H +mon G77A8 MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 4:57 5:25 グラフ(5)グラフ(5)
8MHz, 24KHz, V1S, NEW ON 1 MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 4:01 4:21 グラフ(4)グラフ(4)
8MHz, 24KHz, V1H +mon G77A8 MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 3:09 3:24 グラフ(5)グラフ(3)
PC-8001mkII MBASIC 5.22 / MSA 56K CP/M for 8001 "2.2B" (2D) 8:01 - Fukui, Toshioさん グラフ(8)
MBASIC 5.22 / NEC 56K CP/M for 8001 (2D) 7:51 8:45 グラフ(7)グラフ(8)
FM-77D2 Z80 4MHz, Green Mode MBASIC 5.21 / Fujitsu 56K CP/M for FM-77 L2.0 5:26 5:26 グラフ(5)
Z80 4MHz, Color Mode MBASIC 5.21 / Fujitsu 56K CP/M for FM-77 L2.0 5:26 5:26 グラフ(5)
MC68B09 2MHz MBASIC 5.21 / EMX80 (60K CP/M) 74:42 (省略) グラフ(74)
FM-77D2
+HD63C09カード
HD63C09E 4MHz MBASIC 5.21 / EMX80 (60K CP/M) 33:10 (省略) グラフ(33)
HD63C09E 4.8MHz MBASIC 5.21 / EMX80 (60K CP/M) 27:37 (省略) グラフ(27)

表中、No T.A. = No Type Ahead (キー先行入力なし)、W/ T.A. = With Type Ahead(キー先行入力あり) です。 グラフでは、オンオフ可能であれば先行入力をオンにした場合の増加分をオレンジ色で表現しています。
このセッションでは、8MHz の PC-8801MA + NEC版 PC-8001用CP/M が最速となりました。やはり CPU の速度は効きますね。
Z80 4MHz で横並びの比較では X1 が最速となります。 BIOSを叩くところまでは全く同じプログラムを実行していますので、それ以降のオーバーヘッドが少ないんだと思います。

以下、補足と気になった点です。
EMX80m
Katsura Eijiさんによる、EMX80 です。
・掲載誌:I/O 1985年 4月号
・Z80 カード無しで、CP/M-80 のソフトウェアを実行することができます。
 ただし、8080の命令のみサポートされています。(TURBO PASCAL は動きません。)
・左の画面は、オリジナル版にはせりんがちょっと改造したバージョンです。


Fukui, Toshio さんのコメント:

各社BASIC で ASCIIARTベンチマークを実施(中)
●続いて、各社の BASIC にて ASCIIARTベンチマークをエミュレータと実機で実施してみました。
(測定は、手持ちのストップウォッチにて行いました。なので1秒未満の誤差はご容赦。)
Microware社の Basic09 のみ若干修正必要でしたが、他の BASIC は元々 MS-BASIC系なので修正不要でした。
今回、BML3 及び MB-S1 で実行するに当たり、Sasajiさんより設定のアドバイスをいただきました。
また、Fukui Toshioさんより MZ-2000、MZ-2521、X1、X1turboZ 及び PC-8801MA の実機で検証していただけました。
さらに、apaslothyさんより PC-8801(初代機) 、PC-8001mkII、PC-8001mkIISR、PC-8801MC、PC-6001mkIISR の実機で検証していただけました。
3名の方のご協力に感謝します。

エミュレータ編
エミュレータ モード他 BASIC / OS 実行結果 備考・ご協力      5    10    15
eX1 170416 Hu-BASIC CZ8FB01 V1.0 5:33 グラフ(5)
NEWON 5 Hu-BASIC CZ8FB01 V2.0 5:30 グラフ(5)
eX1turbo 170416 NEWON 5 Hu-BASIC CZ8FB02 V1.0 5:51 グラフ(5)
ePC-8801MA 171215 4MHz, V1S N88-BASIC V1.93 (FHシステム) 8:08 グラフ(8)
4MHz, V1H N88-BASIC V1.93 (FHシステム) 5:26 グラフ(5)
4MHz, V2 N88-BASIC V2.3 (FHシステム) 5:26 グラフ(5)
4MHz, N N-BASIC V1.8 [2Dシステム] 7:43 グラフ(7)
bml3mk5 1.61 NEW ON 7, SCREEN 0 LEVEL-3 BASIC V1.0 16:18 Sasajiさん グラフ(15)
mbs1 model05 0.41 +64KB RAM, NEW ON 1 S1 BASIC V1.0 5:22 Sasajiさん グラフ(5)
XM7pure V1.1 L77SX+r01 FM-77, サブ高速 F-BASIC V3.0 L2.0 5:12 グラフ(5)
Basic09 #21 / FM-77 OS-9 Level1 V1.2J L1.1 1:21 グラフ(1)
実機編
機種 モード他 BASIC / OS 実行結果 ご協力      5    10    15
MZ-2000 Hu-BASIC Disk Version 2.0 5:31 Fukui, Toshioさん グラフ(5)
MZ-2521 2000モード, 4MHz 24KHz=15KHz Hu-BASIC Disk Version 2.0 5:32 Fukui, Toshioさん グラフ(5)
2000モード, 6MHz 24KHz Hu-BASIC Disk Version 2.0 4:12 グラフ(4)
X1 Hu-BASIC CZ8FB01 V1.0 5:31 Fukui, Toshioさん グラフ(5)
NEWON, NEWON 5 Hu-BASIC CZ8FB01 V2.0 5:31 グラフ(5)
X1turboZ Hu-BASIC CZ8FB01 V1.0 5:30 Fukui, Toshioさん グラフ(5)
NEWON, NEWON 5 Hu-BASIC CZ8FB01 V2.0 5:30 グラフ(5)
15KHz, 24KHz/NEWON, NEWON 5 Hu-BASIC CZ8FB02 V1.0 5:49 グラフ(5)
15KHz, 24KHz Hu-BASIC CZ8FB03 V1.0 6:27 グラフ(6)
PC-8801 (初代!) 15KHz N88-BASIC V1.1 10:27 apaslothy さん グラフ(10)
24KHz N88-BASIC V1.1 9:35 グラフ(9)
15KHz N-BASIC V1.2 8:19 グラフ(8)
24KHz N-BASIC V1.2 7:59 グラフ(8)
PC-8801MA 4MHz 15KHz V1S N88-BASIC V1.93 (FHシステム) 8:54 Fukui, Toshioさん グラフ(8)
4MHz 15KHz V1H N88-BASIC V1.93 (FHシステム) 5:27 グラフ(5)
4MHz 15KHz V2 N88-BASIC V2.3 (FHシステム) 5:27 グラフ(5)
4MHz 24KHz V1S N88-BASIC V1.93 (FHシステム) 8:24 グラフ(8)
4MHz 24KHz V1H N88-BASIC V1.93 (FHシステム) 5:26 グラフ(5)
4MHz 24KHz V2 N88-BASIC V2.3 (FHシステム) 5:26 グラフ(5)
8MHz 15KHz V1S N88-BASIC V1.93 (FHシステム) 4:31 グラフ(4)
8MHz 15KHz V1H N88-BASIC V1.93 (FHシステム) 3:22 グラフ(3)
8MHz 24KHz V1S N88-BASIC V1.93 (FHシステム) 4:20 グラフ(4)
8MHz 24KHz V1H N88-BASIC V1.93 (FHシステム) 3:21 グラフ(3)
4MHz 15KHz V1S, NEW ON 1 N-BASIC V1.8 (2Dシステム) 8:19 グラフ(8)
4MHz 24KHz V1S, NEW ON 1 N-BASIC V1.8 (2Dシステム) 7:58 グラフ(8)
PC-8801MC 4MHz 15KHz V1S N88-BASIC V1.93 8:53 apaslothy さん グラフ(8)
4MHz 15KHz V1H N88-BASIC V1.93 5:27 グラフ(5)
4MHz 15KHz V2 N88-BASIC V2.3 5:27 グラフ(5)
4MHz 24KHz V1S N88-BASIC V1.93 8:24 グラフ(8)
8MHzS 15KHz V1S N88-BASIC V1.93 4:31 グラフ(4)
8MHzS 15KHz V1H N88-BASIC V1.93 3:22 グラフ(3)
8MHzH 15KHz V1S N88-BASIC V1.93 4:03 グラフ(4)
8MHzH 15KHz V1H N88-BASIC V1.93 3:01 グラフ(3)
8MHzS 24KHz V1S N88-BASIC V1.93 4:20 グラフ(4)
8MHzH 24KHz V1S N88-BASIC V1.93 3:53 グラフ(3)
4MHz 15KHz V1S, NEW ON 1 N-BASIC V1.8 8:20 グラフ(8)
4MHz 15KHz V1H, MON G77A8 N-BASIC V1.8 5:17 グラフ(5)
4MHz 15KHz V2, MON G77A8 N-BASIC V1.8 5:17 グラフ(5)
4MHz 24KHz V1S, NEW ON 1 N-BASIC V1.8 7:58 グラフ(8)
8MHzS 15KHz V1S, NEW ON 1 N-BASIC V1.8 4:25 グラフ(4)
8MHzS 15KHz V1H, MON G77A8 N-BASIC V1.8 3:21 グラフ(3)
8MHzH 15KHz V1S, NEW ON 1 N-BASIC V1.8 3:58 グラフ(4)
8MHzH 15KHz V1H, MON G77A8 N-BASIC V1.8 3:02 グラフ(3)
8MHzS 24KHz V1S, NEW ON 1 N-BASIC V1.8 4:16 グラフ(4)
8MHzH 24KHz V1S, NEW ON 1 N-BASIC V1.8 3:50 グラフ(3)
PC-8001mkII N80-BASIC V1.0 8:45 apaslothy さん グラフ(8)
N-BASIC V1.3 8:19 グラフ(8)
PC-8001mkIISR 高速モード N80SR-BASIC V1.0 7:06 apaslothy さん グラフ(7)
N80-BASIC V1.1 7:43 グラフ(7)
N-BASIC V1.6 7:20 グラフ(7)
標準モード N80SR-BASIC V1.0 7:06 グラフ(7)
N80-BASIC V1.1 7:44 グラフ(7)
N-BASIC V1.6 7:20 グラフ(7)
PC-6001mkIISR MODE 2 N60-BASIC 24:39 apaslothy さん グラフ(24)
MODE 4 N60-BASIC 24:39 グラフ(24)
MODE 5 N66-BASIC 1.1 32:13 グラフ(32)
MODE 6 N66SR-BASIC 1.0 12:10 グラフ(12)
PC-8201 (80C85 2.4MHz) N82-BASIC V1.0 7:57 apaslothy さん グラフ(8)
FM-77D2 MC68B09 2MHz F-BASIC V3.0 L2.0 5:13 グラフ(5)
Basic09 #21 / FM-77 OS-9 Level1 V1.2J L1.1 1:21 グラフ(1)
FM-77D2
+HD63C09カード
HD63C09E 4MHz F-BASIC V3.0 L2.0 2:20 グラフ(2)
Basic09 #21 / FM-77 OS-9 Level1 V1.2J L1.1 0:33 グラフ(0)
HD63C09E 4.8MHz F-BASIC V3.0 L2.0 1:57 グラフ(2)
Basic09 #21 / FM-77 OS-9 Level1 V1.2J L1.1 0:30 グラフ(0)

このセッションでは、OS-9上の Basic09 が最速となりました。MS-BASIC系は 5分台で並んでいますのは、構造が似ているからでしょうか。
以下、補足と気になった点です。
Fukui, Toshio さんのコメント:
apaslothy さんのコメント:
Q & A コーナー:

ベンチマークに使用したデータ
●今回のベンチマークに用いたプログラムを一式ここに格納いたしました。
(BASIC 及び OS は別途ご用意ください。)
関係各位のアドバイスいただければ幸いです。
またみなさんの追試に期待いたします。特にレア系PCお持ちの方、どうかよろしくお願いします。
ただし、原則として次の条件に当てはまる機種でお願いします。

尚、本ページの各表の作成にはThinkさんのCSV→Table変換サイトのお世話になりました。
ありがとうございました。

F-BASIC起動画面集  F-BASIC詳細編  F-BASIC詳細編(その2:デモ画面集)
FM77AVシリーズ システムディスク編
FM77AVシリーズ デモ・入門ディスク編
CP/M-80
OS-9編
Flex編
F-BASIC ファイルシステム(およびその上位互換)上に構築されたOS、開発システム
FM-7/8シリーズ用プログラミング言語とその処理系
番外編(その2:勝手に誤記修正編)
番外編(その3:6809用MMU考察)
番外編(その5:FM-7,8シリーズのROM一覧)
番外編(その6:FM-77用拡張メモリ他について)
番外編(その7:FM-8/7/77/77AVシリーズの微妙な非互換性)
番外編(その8:FM-7/8シリーズ用アドオンCPUカード)
番外編(その11:FM-11,16シリーズのROM一覧)
緊急特集:MB22603の秘密
--------
レベル3BASICとF-BASIC を覗いてみる
テクノポリス誌ナウシカベンチマークとミンキーモモベンチマーク
ASCIIART(マンデルブロ集合)ベンチマーク
--------
入り口ページに戻る

ご意見、ご要望はこちらまで(笑)
Copyright (C) 2019 by Haserin