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

書き込み速度

1秦野の中年男性:2003/12/19(金) 10:55
皆さんの投稿内容を見ると本当に専門的知識をお持ちの方ばかりで
質問するのもはばかりますが。
まずFBASICV6.3の開発続行の署名に参加いたします。
Windows98の時はOPEN "TEST" for create as #1
print #1 a;",";.....の保存速度が気にならない位でしたが
Windows2000,XPになってから3倍くらいかかるようになりました
対策を教えて下さい

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をお使いならばソフトの買い換えだけで(ソースは変えなくても)
ファイルアクセスが早くなる可能性は大きいかもですね…

3F橋:2003/12/19(金) 20:40
>まずFBASICV6.3の開発続行の署名に参加いたします。
ありがとうございます。2つ程ご質問(アンケート)がありますのでご協力お願いします

1.何本購入予定でしょうか?(あくまで「予定」なので…)
2.掲載するHNは「秦野の中年男性」さんでよろしいでしょうか?

よろしくお願いします

4F橋:2003/12/28(日) 18:42
>>1
秦野の中年男性さん>

あ...↓の続きなんですね(笑

書き込み速度
http://jbbs.shitaraba.com/bbs/read.cgi/computer/7997/1071798904/

>書き込み速度の返信ありがとうございました。
いえいえ。お役に立てば幸いですです

>またFBASIVV7.0の購入は1本でお願いします。
>ハンドルネームは「秦野の中年男性」で結構です。
了解しました。

>私はこういう掲示板に書くのは初めてですが、「秦野の中年男性」
>と書かれた窓がいくつもあるはどうしてですか

この件は...>>2でnisiiさんが説明されている通りなので以下略ということで(笑
補足になるかどうかあれですが。ちょっと補足・・・

この掲示板を含め一部の掲示板には前回投稿した内容の一部(HNとかメールアドレスとかクレジットカードの番号とか・・・)を
記憶するクッキーと呼ばれる機能があります。
(次に投稿した時に投稿を少しでも楽にするために前回入力した内容の一部(HNとか)を表示する機能)
((↑HNを毎回毎回入力する手間が省けます))
クッキーは自分のパソコンで暗号化して覚えるので分かりません
確か。自分のパソコンのIEのフォルダのどこかにアドレスといっしょに暗号化して記憶します
次にそのアドレスを表示するときに自分のパソコンのIEが勝手にHNなどを埋めます

・・・説明下手な私の説明で分かると助かりますです


あ。あとnisiiさんのお話どおり・・・
話の続きの場合はスレッドを立てるのではなくレスという形にして頂けると助かりますです
よろしくお願いします

5F橋:2003/12/28(日) 18:43
>>2
nisiiさん>
>もしかして各スレッドの「書き込む」ボタンの右にある「名前:」欄のことでしょうか?
nisiiさんのこのレスがあって初めて意味がわかりましたです。助かりました(笑

また早速のレス本当にありがとうございました

6F橋:2003/12/28(日) 18:44
>>4 >>5
スレッドを間違えてレスしました。すいませんです


新着レスの表示


名前: E-mail(省略可)

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

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

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

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