■47075 / ) |
Re[11]: CSVファイル入出力時の速度向上方法について |
□投稿者/ こあら (78回)-(2010/02/18(Thu) 01:56:04)
|
■No47047 (みきぬ さん) に返信 > ■No47041 (こあら さん) に返信 > ただ今回の話では、元質問者から具体的なコードが提示されています。 > わざわざ別のやり方で結果を示す理由がわからなかったのです。 > # VB6 の確認環境がないから、とかならわかるんだけど > > さらに言うと、私から見たこあらさんのやりかたは、元質問者の方法を「わざわざ遅くしている」ようにも見えました。 > こあらさんのやり方で雲泥の差が出ても、それが元質問者の方法でもそのような結果になるかというと、関係がないと思うのです。 > # ADODB.Stream を知らない(CSV ファイルを DB のように扱ってるのかなあ、くらいの理解)し、 > # 確認できる環境も持ってないので、このへんは単なる勘ですが
疑問が分かりました。こちらの状況を説明すると、 ・VB6の環境がない ・VBScriptならADODB.Streamのファイルコピースクリプトを持っていた ・ADODB.StreamもFileSystemObject.TextStreamもMemoryStreamだから似たような性能でしょ? ・ActiveXならVB6からでもVBScriptからでも呼び出しコストは大差ないんじゃない? です。
つまり、こちらでチャチャッと試せて質問者さんの環境と似たような結果になりそうだという判断でした。 少し配慮が足りなかったかもしれません。すみませんでした。
せっかくなので懲りずにTextStreamに書き直してみました。都合によりやはりVBScriptで。 *--- Option Explicit 'On Error Resume Next
dim fso, istream, ostream, i, s
s = Now()
Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set istream = fso.OpenTextFile("C:\temp\input.csv") Set ostream = fso.CreateTextFile("C:\temp\output.csv")
For i = 1 to 100 istream.SkipLine Next
'Do While not istream.AtEndOfStream ' ostream.WriteLine istream.ReadLine 'Loop '↑↓どちらかを有効にして速度を計ってください 'ostream.Write istream.ReadAll
istream.Close ostream.Close
Set istream = Nothing Set ostream = Nothing Set fso = Nothing
Msgbox FormatDateTime(Now() - s) ---*
|
|