chibicc compiler を6800向けに改造する (7) dhystone

BASICMASTER, 昔のパソコン

コンパイラが一通り動くようになったのでベンチマークしてみた。古典的な dhrystone。 z88dkで動くバージョンがあったので、それで試してみる。

案の定、いくつかbugが出たが、なんとか動くようになった。

chibicc 6800 で dhtystone

とりあえず実行。特に表示はなく終了する。所用サイクルは、285,140,069. 1MHz 6800なら、285秒。ベーシックマスターなら380秒ぐらいか。

バイナリサイズは 11,826バイト。ベーシックマスター実機でも動きそうなサイズである。

1MHz換算なら 0.039 DMIPS、2MHzでも .0798 DMIPS。遅いなあ。


./drytest 
FuzixLD 0.2.1
emu6800 -d 6800 dhry.bin dhry.map
CPU cycles = 3207
CPU cycles = 285143276
0


Z88DKと比較

記事先頭に書いたリンク先には、ベンチマークの結果がいくつか書かれている。

この中では SDCC Linux版が一番速いようだ。他のコンパイラも 0.1-0.2 DMIPSぐらいでていて高速である。


4.
SDCC 4.2.0 Linux
6825 bytes less page zero

cycle count  = 225522684
time @ 4MHz  = 225522684 / 4x10^6 = 56.3807 seconds
dhrystones/s = 20000 / 56.3807 = 354.7315
DMIPS        = 354.7315 / 1757 = 0.20189



HITECH C は、FM-8のCP/M (Z80カードで動かす)で使ったことがあるが、コンパイルが非常に遅いんで BDS-C ばかり使っていた記憶がある。


6.
HITECH C CPM V309-15
8988 bytes exact

cycle count  = 356235065
time @ 4MHz  = 356235065 / 4*10^6 = 89.0588 sec
dhrystones/s = 20000 / 89.0588 = 224.5708
DMIPS        = 224.5708 / 1757 = 0.1278


dhrystoneは特定の関数が高速化できれば速くなる、という話を大昔に聞いたことがあるが、どれだっけなあ。

リンク