• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Чтение Из Тхт Файла Построчно

  • Автор темы Serduko
  • Дата начала
S

Serduko

Использую такой вариант перебора строк:
Код:
While text0 <> ""
str0 = StrLeft(text0,strEnter,1)
...
<обработка строки>
...
text0 = StrRight(text0,strEnter,1)
Wend

Но он как показывает практика не очень быстр при больших обьемах файла (65000 строк).

Есть ли более "красивые" варианты?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
Во-первых используется небыстрая проверка:
text0 <> ""
гораздо лучше:
Len(sText) <> 0.

Во-вторых, по моему, лучше прочитать весь файл (всё содержимое) сразу с помощью NotesStream (если речь идёт только о LS) - это чуток ударит по памяти, но по скорости результат будет лучше, затем преобразовать в массив с помощью Split(sText, sSeparator) + сразу же очистить строку, и потом пробежаться по массиву - получение строк LS-функцией будет значительно быстрее.

P.S. Поделитесь результатами измерения времени ;)
 
S

Serduko

Во-первых используется небыстрая проверка:
text0 <> ""
гораздо лучше:
Len(sText) <> 0.

Во-вторых, по моему, лучше прочитать весь файл (всё содержимое) сразу с помощью NotesStream (если речь идёт только о LS) - это чуток ударит по памяти, но по скорости результат будет лучше, затем преобразовать в массив с помощью Split(sText, sSeparator) + сразу же очистить строку, и потом пробежаться по массиву - получение строк LS-функцией будет значительно быстрее.

P.S. Поделитесь результатами измерения времени ;)

скрипт одноразовый, так что я не заморачивался на мелочи, такие как "text0 <> """
NotesStream и так использовал, т.е. переменная text0 содержала уже выгруженные из файла даные.
Split - то что мне было нужно, благодарю ;)
к сожалению не удалось сделать единый массив на 65000 тыс ячеек, пришлось разбить таким образом:
Код:
While text0 <> ""
strarr = Split(text0,strEnter,10000)
stend = UBound(strarr)
If UBound(strarr) = 9999 Then
text0 = strarr(UBound(strarr))
strarr(UBound(strarr)) = ""
stend = stend - 1
Else
text0 = ""
End If

For st = 0 To stend
...
Next
Wend

Прошлый вариант работал бы наверно часа 4, текущий выполняется 5 мин.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!