したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

書き込み速度

2F橋:2003/12/19(金) 20:40
>>1
秦野の中年男性さん>
>専門的知識をお持ちの方ばかりで…
一応管理者をしているF橋と申します…が…私が一番知識が無いので…そんな私の解答で申し訳ございませんです

また。現在F-BASICの環境がある所にいないので正確な答えではないかもです
ご了承下さい

>print #1 a;",";.....の保存速度が気にならない位でしたが
>Windows2000,XPになってから3倍くらいかかるようになりました
F-BASICの問題…では無くて…OSの問題で遅くなっている気がします
同じハードにWindows95系(98,98SE,ME)とWindowsNT系(NT,2000,XP)を入れた場合…
WindowsNT系の方が処理が重く(遅く)なると記憶しております
(…非常に重い処理の場合はNT系のが早いかも…など例外はありますが…)

ともかく。少しずつ行う処理は95系のOSが早く大量のデータを一気に扱う場合は
95系、NT系ともそれほど変わらないと思います
またファイルに書き込む場合は少しずつ書くより一気に書き込んだ方が早いです
(これはMS-DOSの時代から体験、体感している事です)

プログラムの変更が必要ですが…

print #1, a;","; b;","; c;","; d;","; e;","; f;","; ...
ではなくて…

work$=str$(a)+","+ str$(b)+","+ str$(c)+","+ str$(d)+","+ str$(e)+","+ str$(f)+","+ ...
print #1, work$
とする事でかなり早くなると思います(1行の内容を文字列にして…1行まとめて書き込む)

配列で… dim a(300) としていて…それを書き込むのなら
(↓カンマ区切り形式で…100毎に改行してファイル出力すると仮定…)

for i%=1 to 100: print #1, a(i%);","; : next i% : print #1, a
for i%=101 to 200: print #1, a(i%);","; : next i% : print #1, a
for i%=201 to 300: print #1, a(i%);","; : next i% : print #1, a
と書くより…

work$="": for i%=1 to 100: work$=work$+str$(a(i%))+"," : next i% : work$=work$+chr$(13,10)
work$="": for i%=101 to 200: work$=work$+str$(a(i%))+"," : next i% : work$=work$+chr$(13,10)
work$="": for i%=201 to 300: work$=work$+str$(a(i%))+"," : next i% : work$=work$+chr$(13,10)
print #1, work$

とすると3行まとめて一括で書き込めるのでかなり早くなるはずです
(かなり…ではなくて…「劇的に」早くなるかと…)

↑はF-BASICに限らず…MS-DOS時代のN88BASICやTurbo-Cでも体感済で…
 1byteずつ書き込むかまとめて書き込むかで非常に大きな速度差があります

文字列は感覚的に…確か32Kbyte程度まで(=32000文字)は高速に動作するようです
(F-BASICの仕様を見るに「文字列は無制限」となっておりますがどうも32Kbyte付近から
 少しずつ遅くなりはじめて…数Mbyteの文字列とするとかなり遅くなったと記憶してます)

32KByteまで。なので…1行が200文字としても…32000/200 = 160...
160行まとめて書込が出来るはずで…こんな形で一括で書き込む。という形にすると
高速に書込ができるはずです

もう1つ。Windows95系は全て遅延書込をする。が標準の設定でした
XPは遅延書込をしない。が標準設定で…2000がどっちだったか記憶にないです
少なくとも遅延書込がある段階でそちらの方が書込は早いので
OSの問題だけでなくそういう設定にも理由があるかと思います

あと…WindowsNT系がWindows95系より遅い理由は…え〜と…安全を求めているから。というか…
Windows95系はCPUをほとんど使って何かします…だから暴走する確率が高い…
WindowsNT系は…必ずCPUの一部に余力を持たせている感じ…といえばいいのかな…
重い処理は95系もNT系も変わらないというのは…え〜と…
16bitで処理するのか…32bitで処理するのか…の違い(メモリ関連も含めて)と思ってます

さらにもう1つ…
F-BASICのバージョンはいくつでしょう?
Ver6.3になった時に…ファイルアクセスが向上。とか書いてあったはずなので…
現在F-BASIC97やF-BASIC Ver6をお使いならばソフトの買い換えだけで(ソースは変えなくても)
ファイルアクセスが早くなる可能性は大きいかもですね…


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板