高速化

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
shoji
記事: 4
登録日時: 2005年9月15日(木) 01:24
お住まい: 東京

高速化

#1 投稿記事 by shoji »

はじめましてお願いします

プログラムがお粗末なのは重々承知ですが
機械語レベルでデータの読み書きをしたいです!!
AB4での方法を教えてください。


#N88BASIC

Dim A As long,B As long ,C As long,D As long

OPEN "C:\takarakuji.txt" FOR OUTPUT AS #1
FOR A=1 TO 30
FOR B=A+1 TO 30
FOR C=B+1 TO 30
FOR D=C+1 TO 30
PRINT #1,A,B,C,D
print A,B,C,D
NEXT D
NEXT C
NEXT B
NEXT A
CLOSE #1
マティ
記事: 161
登録日時: 2005年8月23日(火) 00:15
お住まい: 沖縄県
連絡する:

#2 投稿記事 by マティ »

インラインアセンブラの無いABで、どのように処理を行うのでようか?
私も興味があります。
まあ、COMを利用して外部実装しなさいが正解でしょう!!

あと、 実践コードモジュールにマシン語を走らせる項目がありましたが・・・貴方のマシン語レベルは、ものすごいレベルなのでしょうか?
マシン語を使う前にアルゴリズムを変更する事をお勧めします。

PS.
私も大昔?にN88互換のBasicFirst?で2次元配列の順番がバージョンアップによって変更になり、痛い目にあった経験があります・・・
マシン語って大変ですよ!
やりたい事をきちんと説明してから、実行した方が幸せになれると思います。
マティ
記事: 161
登録日時: 2005年8月23日(火) 00:15
お住まい: 沖縄県
連絡する:

#3 投稿記事 by マティ »

自分もAB4から始めたので、ABに関しては初心者です!

ABをコンパイルしても性能がインタープリタ系のBASICより遅い場合があるのは、文字列処理(String型)系とIfで条件式が複雑な場合だと認識しています。

インタープリタ系の言語は、文字列等のチューニングが行われていますが、
ABは返却用の文字列領域を必ず作成するので、オーバーヘッドがもの凄く大きいです。

それ以上に気になる事があります。
画面に表示する速度が遅いのが問題なのでしょうか?

何が問題かを教えて下さい。
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

#4 投稿記事 by NoWest »

マティ さんが書きました:> 自分もAB4から始めたので、ABに関しては初心者です!
>
> ABをコンパイルしても性能がインタープリタ系のBASICより遅い場合があるのは、文字列処理(String型)系とIfで条件式が複雑な場合だと認識しています。
>
> インタープリタ系の言語は、文字列等のチューニングが行われていますが、
> ABは返却用の文字列領域を必ず作成するので、オーバーヘッドがもの凄く大きいです。
>
> それ以上に気になる事があります。
> 画面に表示する速度が遅いのが問題なのでしょうか?
>
> 何が問題かを教えて下さい。
画面への表示速度が遅いというのは事実です。
というのもActiveBasicが描画用に使っているビットマップに
デバイス依存型ビットマップを使っているからです。

この辺りを改良すればN88BASIC互換モードの描画速度はかなり改善する筈です。


DIBでビットデータを参照できるようにすれば
PeekとPokeでビットマップを描くことができるようなったりとか妄想してます。(笑
マティ
記事: 161
登録日時: 2005年8月23日(火) 00:15
お住まい: 沖縄県
連絡する:

Re: 高速化

#5 投稿記事 by マティ »

画面描画に関するエミュレーション方法がグラフィックをサポートする#N88BASICと、テキストのみ?の#consoleで大分異なっているようですね!

ディスプレイドライバーを256色固定で使用できるなら、パレットを使って高速にエミュレーションできますが・・・
多色対応になると、グラフィックとをテキストのビットマップを合成する処理に時間がかかってしまいます。

#N88BASICの高速化提案ですが、自分はDirectXに詳しくないので・・・
DirectVideoを利用して、表画面にテキスト、裏画面にグラフィックを描画してオーバーレイを行えばエミュレーションが#console並に高速になると思われます。
早い話が、文字の背景色に使用する色をオーバーレイ対象色にしてしまうって事です
また、複数の解像度のグラフィックや2画面サポートも出来たりして・・・
norige

#6 投稿記事 by norige »

マティさん、NoWestさん

ありがとうございました!!
とにかく勉強になりました!!

僕なりに思うのは、簡単な計算だけだったら
いちいちディスク保存するのではなく、メモリ内で
処理しようと思います。

これからの身ですがまたお願いします。
返信する