windows10 のcmd上で動くcp/m executorでコマンドの実行時間を計測する方法
D:\>のようなプロンプトに対して
powershell -Command "Measure-Command { ここに計測したいコマンド}" とする。
cp/m executorの場合だとcpm [cp/mのコマンド+パラメータ]となるのでそのように打つと所要時間がわかる。
例えばsingle board computer界隈ではasciiartという名前で打ち切り回数15回のキャラクターベースのマンデルブロー集合の描画でそのcpuの処理速度を見るのだけど。概ねz80の8MHzで2分30秒くらいの時間が掛かっている。これを計測してみよう。
まずは通常の実行、mbasicでasciiat2.basというプログラムを実行。
これの実行時間を計測してみる。
cpm mbasic asciiat2.bas の部分を先ほどの呪文で挟んで・・
出た! 1.42秒か。なるほど
ではcpm8266ではどうかな、こいつはcp/m2.2なので時計とか無いからストップウォッチで測るので誤差1秒くらいあるけど関係ないくらい遅いから。さて
最初のコマンドの窓とフォントの設定が異なるのでちょっとイメージが違うけど同じ文字の結果が得られている。実行時間は手元のSWで2分39秒なのでexecutorの110倍以上の差がついたことになる。
このBASICのソースをbascomでコンパイルしたものだと実行時間は1分10秒で2倍以上高速になる。tpでソースを直してコンパイルしたものは
1分40秒でインタープリターよりは速いがbascomの生成したものよりは遅い結果になった。basicの浮動小数が4バイト単精度なのに対してTPが6バイトの浮動小数なのも影響しているかもしれない。
ちなみにwinのexecutorではbascom 447mS,tp 183mSとなり逆転している。このくらい速くなるとbascomの起動用の外部コマンドbrun.comの起動時間が足を引っ張り出すのかもしれない。
目下の問題はエミュでHiTech-cの浮動小数doubleがからむソースのコンパイルに失敗するということ
まあz80でCってあんまり重要視してなくてTPとPascalが動けば十分だとも思うしアセンブラのほうが触りたいのかなって自己分析してる
mon80を使って機械語に触れたいかな?あとはtpのbdos命令とかで十分か? cのコンパイル問題はじんわりと解決していこう
(19/11/14 am11:30) hitech-c の問題1つは解決
変数宣言を最近のCみたいに{}の途中ではできない様だ。
pascalがprocedure や function宣言部とbeginの間にvarで変数宣言部を持つかのように{の直後に変数宣言をかためる必要がある。
あとは実行は出来てもprintfで内容が出ないで%fだとfと出るのでこの部分だけだ。
(19/11/22 pm8:57) hi-tech cでコンパイルできない問題が解決
浮動小数を扱うにはコンパイル時に-LFを指定しないといけない見たい
(link floating numbersみたいな感じなのか、library findなのか?)
で、asciiartを作成した見た。
時間はwin-cpmで107msでcpm8266で44秒
TPやBascomよりも高速である。
ちなみに各コンパイラのオブジェクトサイズを見ると
turbo pascal :: 9KB
hi-tech c :: 8KB
BASCOM :: 1KB(ただし実行にbrun.com 16KBが必要)