C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 80 を表示中)
■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)
---*

返信 編集キー/


管理者用

- Child Tree -