Как подсчитать строки в текстовом файле с использованием VBA:
40 МБ файла (1,7 миллиона строк)
- CountLF
= 25,2секунд
- CountLines
= 2,1 секунды
14 файлов B (6 строк) x 10000 раз
- CountLF
= 1,3 секунды
- CountLines
= 18,9 секунд
Лучше для маленьких файлов:
Function countLF(fName As String) As Long
Dim st As String
Open fName For Input As #1: st = Input(LOF(1), 1): Close #1
countLF = Len(st) - Len(Replace(st, vbLf, "")) + 1
End Function
Пример использования:
Debug.Print countLF("c:\test.txt")
Лучше для большихФайлы:
Function countLines(fName As String) As Long
countLines = CreateObject("Scripting.FileSystemObject").OpenTextFile(fName, 8, True).Line
End Function
Пример использования:
Debug.Print countLines("c:\test.txt")
Еще бенчмаркинг: (2500 крошечных текстовых файлов)
Binary Access / Get (4,32 с) Kill = 1,17 с.,,Открыть F для двоичного доступа Читайте как # 1: ReDim ... Get # 1,, байты
Линейный вход / LineInput (4,44 с) Kill = 1,11 с.,,Открыть F для ввода в виде #iFile ... Линейный вход # 1, st
Раннее связывание / повторное использованиеObj (5,25 с) Del = 1,12 с.,,Установите o = New Scripting.FileSystemObject ': st = o.OpenTextFile (F) .ReadAll ()
Раннее связывание / FreshObj (11,98 с) Del = 1,35 с.,,Установите o = New Scripting.FileSystemObject ': st = o.OpenTextFile (F) .ReadAll ()
LateBind / ReuseObj (6,25 с) Del = 1,47 с.,,Установите o = CreateObject ("Scripting.FileSystemObject")
LateBind / FreshObj (13,59 с) Del = 2,29 с.,,С CreateObject ("Scripting.FileSystemObject")