アカウント名:
パスワード:
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の羅列で書くと、上への移動と下への移動の速度が違うなんて現象が起こってしまうとか。
NS-HU BASIC で、メモリ節約するのにそれをやるというのがあったような。(コントローラ入力あたりの処理で)
--ええファミリーベーシックですよ
・複数行はマルチステートメント化する
昨年の夏まで、これを徹底させる親分が居るプロジェクトに居ました。(VB.NET 2003)
高速化のテクニックだったのですね。やっと意味が分かりましたよ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall
BASICあつまれー (スコア:1)
RENUM
あとは、行番号にルーチンの固まり毎で帯域を作ったりとか
FORループのNEXTは、変数を書かない方が速いとか。
# って、BASIC毎にちょっとずつ違うのかな?
Re:BASICあつまれー (スコア: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:BASICあつまれー (スコア:3, 興味深い)
MSX-BASICだと、かえって遅くなるんですよ、これ。
他のBASIC実装だと、速かったんでしょうか?
Re:BASICあつまれー (スコア:2, 興味深い)
NEC系は確か速くなったはず、と思ってN88-BASICで確かめてみると、IFを使う場合が10000回で29秒であったのに対して、論理式の方は10000回で33秒となりかえって遅くなってました。
これは高速化のための方法ではなく、N60のようなIF構文が弱い(ELSEが使えない)場合に書きやすいって話だったのかもしれません。
Re:BASICあつまれー (スコア:2, 興味深い)
条件によって処理速度がばらつかないようにという理由もあったように思います。
例のコードみたいなのって、入力に従ってキャラクタを上下左右に動かすとかだったりするんだけど、IFの羅列で書くと、上への移動と下への移動の速度が違うなんて現象が起こってしまうとか。
Re: (スコア:0)
Re:BASICあつまれー (スコア:2, おもしろおかしい)
NS-HU BASIC で、メモリ節約するのにそれをやるというのがあったような。
(コントローラ入力あたりの処理で)
--
ええファミリーベーシックですよ
Re:BASICあつまれー (スコア:1)
それ、HuBASICやS-BASICだと意味ないです。
(1回実行された部分はポインタに置換されてしまうから)
# BASIC処理系は末期にはインタプリタなんだかコンパイラなんだか判らないものになっていましたね…
notice : I ignore an anonymous contribution.
Re:BASICあつまれー (スコア:1)
・複数行はマルチステートメント化する
昨年の夏まで、これを徹底させる親分が居るプロジェクトに居ました。
(VB.NET 2003)
高速化のテクニックだったのですね。やっと意味が分かりましたよ。
Re: (スコア:0)