BASICは、インタープリターではなくコンパイラーです。速くコードの実行を行ないたいという場面もあるかも知れません。この記事では、開発者だから分かるBASICコード高速実行のテクニックについて、幾つかを紹介します。STATIC)で宣言することにより、最長6文字までの英数字文字列で名付けた変数も使えます。長い名前の変数を使った場合と、A-Zの変数を使った場合とで、実行速度に差はありません。演算順位などについて演算順位については、コンパイラーが順位を解釈しながらコンパイルするので、記述を変えても速度は変わりません。2のべき乗による乗除算は、シフト演算に置き換えた方が高速です。定数による演算は、まとめて実行した方が高速です。以下に、幾つか例を挙げます。矢印右のコードの方が、高速です。イコールの場合は、速度は変わりません。「A+2+3」→「A+5」シフト演算子「<<」「>>」は、四則演算子よりも優先度が低いので、注意して下さい。T$という文字列型変数を扱っているとしましょう。BASICの仕様では、Tという整数型変数は、文字列領域へのポインター(文字列が格納されているRAMアドレス)を保持しています。この仕様を利用して、高速な動作をするコードを書くことが出来ます。以下に、幾つか例を挙げます。他には、例えば、以下の例のような文字列の連結などは多少時間のかかる操作です。T$これを、次のように書けば高速化出来ます。T(2)」の所で、12バイト(0から2までの3ワード)のヌルバイトを含む領域が確保され、その領域をPOKEステートメントで埋めることで、上の文字列連結と同じ結果を得ることが出来ます。配列も文字列と同じように、整数型変数値をポインターとして利用出来ます。255」のところ、「RND()」と書けばさらに高速化出来ます。CHR$()関数とPOKEステートメントの第二引数では、整数をバイト値として扱い、下位8ビットのみが有効だからです。この例は、DIMステートメントを用いることで、ヌルバイトを含む文字列領域を確保出来ることを示しています。NEXTNEXT多次元配列を用いた次のコードの方が、高速です。NEXTNEXTこれは、上のコードでは乗算を行なってアドレスを計算しているのに対し、下のコードではそういった計算結果が予め多次元配列構造の中に含まれていて、改めて計算し直す必要がないためです。多次元配列の方が一次元配列よりも、より多くのメモリー領域を必要とすることに留意して下さい。永久ループ以下は、永久ループを様々な方法で構築する例です。100下の例になればなるほど、より高速です。CPUサイクルでループします。下の二つはGOTO文を使っているので、現代のプログラミングでは余りふさわしくない方法かも知れません。構造化プログラミングに於いては、「DO:LOOP」が最速ということになります。1:WEND」と比較しても、ループ当り3CPUサイクルの差しかないので、よほど高速化が必要なルーチンでない限り、余り気にすることはないと思います。ループ以下は、変数Iの値を1から10まで変化させながらループする例です。普通にFORステートメントを用いるのが、最速です。高速に処理するために最も効果的なのが、ビデオ出力を止めることです。MachiKaniaでは、1チップでプログラムの実行だけではなく、ビデオの出力、キーボード入力、音楽再生など、全ての作業を行なっています。ビデオ信号の出力はCPUのリソースをかなり消費しますので、これを止めるとプログラムの実行が速くなります。次のようなコードでこれを行なうことが出来ます。Zで5.2倍、高速に処理が出来るようになります。13:59:21)katsumi様はじめまして、nです。10:49:02)nさんご指摘の通りです。