請問以下三種讀取資料的方法,何者讀比較快??
1) 用 OPEN:
Data=""
Open "File.txt" for input as #1
Do While Not EOF(1)
Line Input#1,str$
Data=Data & Str$
Loop
2) 用FileSystemObject
Data=""
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("file.txt", ForReading)
Do While Not a.atendofline
Data = Data & a.ReadLine
Loop
a.Close
2) 用FileSystemObject
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("file.txt", ForReading)
Data = a.ReadAll
a.Close
1) 用 OPEN:
Data=""
Open "File.txt" for input as #1
Do While Not EOF(1)
Line Input#1,str$
Data=Data & Str$
Loop
2) 用FileSystemObject
Data=""
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("file.txt", ForReading)
Do While Not a.atendofline
Data = Data & a.ReadLine
Loop
a.Close
2) 用FileSystemObject
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("file.txt", ForReading)
Data = a.ReadAll
a.Close
文章標籤
全站熱搜

當然是最後一個最快 I/O一次
但我在 msdn 中看到: 請注意: 對於大的檔案,使用 ReadAll 方法浪費記憶體資源。應使用其它的技術去輸入一個檔案,比如一列一列地讀取檔案。
補充: 我要讀取的檔案容量為 3.3mb
浪費記憶體資源並不代表速度慢,一般來講CPU Bind的程式雖會運用大量Resource,但Performance最佳,減少I/O是最佳選舉,除非ReadAll有它的限制
請問一下~ 如果記憶體剛好耗盡~ windowns為了取的更多記憶體而寫入硬諜 那這樣不會讓電腦又一鈍一鈍嗎?? 這樣會更耗時吧~
上述所言只對所提問題發表淺見,若對於整體環境而言,須針對您所開發業務 性質.用途.其它因素等作完整考量
你為何不直接加幾行測試用命令 求t1,t2 然後dt1=t2-t1,算出花多少時間 然後比較3個方式的執行時間ㄋ?
測時間當然最準,但系統當時的狀況,記憶體用了多少,虛擬記憶體用了多少,CPU/硬碟速度等因素,都可能使三種方法在不同時機有不同排名。
Open TABLE_NAME For Input As #1 sFILE = Input(LOF(1), #1) 看看這方式 會不會有幫助 如果再吹毛求疵一點,理論上用CREATOBJECT() 來使用見該物件 應該會比用OPEN 還....還慢....一點點點...... 但是讀檔的動作 是最花時間的.. 如果能把檔案放置虛擬磁碟 可能有改善的空間 用全文 找RAMDISK 看看有沒有幫助
用 Input(LOF(1),#1) 會發生 "輸入已超過檔案結尾" 的錯誤!! 使用 ReadAll 在 Windows ME 會發生 "記憶體不足" 的錯誤!! 請問各位還有什麼解決方法?
Inputb(LOF(1),#1)試試 dim MyData() as Byte Open "File.txt" for input as #1 MyData = InputB(LOF(1),#1) 若讀入的資料有中文,必須要轉碼!
更正 Open "File.txt" for input as #1 改為 Open "File.txt" for Binary as #1
若用 byte 讀進來後都只有一個字元....再把字元用 for....next 連起來,比用 open 逐筆讀進來還慢, 請問還有其他方法嗎?
唉!不會自已變化一下! Dim MyData as String Open "File.txt" for Binay as #1 MyData = Input(LOF(1),#1) 或是 Dim MyData as String Open "File.txt" for Binay as #1 MyData = StrConv(InputB(LOF(1), #1), vbUnicode)
記得Input()函數一次最多只能讀64K, 3.3mb資料也沒多小,不用太計較時間還是一行一行讀入,你不可能只讀入檔案不作資料處理吧
感謝各位回答!! 用了 Dim MyData as String Open "File.txt" for Binay as #1 MyData = StrConv(InputB(LOF(1), #1), vbUnicode) 果然快很多從以前的 24分鐘變為現在只要 10 秒即可讀入 3.3MB 的文字檔, 但問題又來了,為何讀進來的資料會遺失!
Why convert into Unicode ? do you use NT System ?
is Windows 2000 Pro