アカウント名:
パスワード:
RENUMあとは、行番号にルーチンの固まり毎で帯域を作ったりとかFORループのNEXTは、変数を書かない方が速いとか。
# って、BASIC毎にちょっとずつ違うのかな?
昔のBASICの高速化のテクニック(?)として、
・プログラムの最初でDEFINT A-Z・よく実行されるコードは最初の方においておく (行番号を先頭から線形探索しているから?)・変数名は短くする・複数行はマルチステートメント化する・IF I=29 THEN X=X+1 ELSE IF I=30 THEN X=X-1の代わりにX=X+(I=30)-(I=29)とする。
とかいうのを思い出しました。
NEC系は確か速くなったはず、と思ってN88-BASICで確かめてみると、IFを使う場合が10000回で29秒であったのに対して、論理式の方は10000回で33秒となりかえって遅くなってました。これは高速化のための方法ではなく、N60のようなIF構文が弱い(ELSEが使えない)場合に書きやすいって話だったのかもしれません。
条件によって処理速度がばらつかないようにという理由もあったように思います。例のコードみたいなのって、入力に従ってキャラクタを上下左右に動かすとかだったりするんだけど、IFの羅列で書くと、上への移動と下への移動の速度が違うなんて現象が起こってしまうとか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
BASICあつまれー (スコア:1)
RENUM
あとは、行番号にルーチンの固まり毎で帯域を作ったりとか
FORループのNEXTは、変数を書かない方が速いとか。
# って、BASIC毎にちょっとずつ違うのかな?
Re: (スコア:3, 参考になる)
昔のBASICの高速化のテクニック(?)として、
・プログラムの最初でDEFINT A-Z
・よく実行されるコードは最初の方においておく (行番号を先頭から線形探索しているから?)
・変数名は短くする
・複数行はマルチステートメント化する
・IF I=29 THEN X=X+1 ELSE IF I=30 THEN X=X-1の代わりにX=X+(I=30)-(I=29)とする。
とかいうのを思い出しました。
Re: (スコア:3, 興味深い)
MSX-BASICだと、かえって遅くなるんですよ、これ。
他のBASIC実装だと、速かったんでしょうか?
Re: (スコア:2, 興味深い)
NEC系は確か速くなったはず、と思ってN88-BASICで確かめてみると、IFを使う場合が10000回で29秒であったのに対して、論理式の方は10000回で33秒となりかえって遅くなってました。
これは高速化のための方法ではなく、N60のようなIF構文が弱い(ELSEが使えない)場合に書きやすいって話だったのかもしれません。
Re:BASICあつまれー (スコア:2, 興味深い)
条件によって処理速度がばらつかないようにという理由もあったように思います。
例のコードみたいなのって、入力に従ってキャラクタを上下左右に動かすとかだったりするんだけど、IFの羅列で書くと、上への移動と下への移動の速度が違うなんて現象が起こってしまうとか。