Помогите сократить время взятия строчки из файла.

nikakoss

Client
Регистрация
22.04.2011
Сообщения
127
Благодарностей
3
Баллы
18
Всем привет!
Ув., все! Подскажите плз как сделать следующее:
есть file#1 в котором есть строки
str1
str2
str3 итд...
Файл довольно тяжелый (4мб). Задача брать рэндомно из этого файла строчки и записывать в другой файл. Видимо зенно каждый раз тратит время на открытие и поэтому генерация второго файла происходит медленно (сек 20-30). Как можно сократить это время? Может взять блоком, а потом вытащить из него построчно? Но у меня так не получилось. (регулярка (?<=\{-String\.Enter-\})[\w\W]*?(?=\{-String\.Enter-\}))
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
я не спец.
Но попробуй сначала макрос "Взять блок из файла" и выдерни содержимое всего файла, просто указав путь к нему. Остальные параметры по дефолту.
А потом регуляркой "Взять строку" парси уже результат первого макроса, как ты парсишь сейчас изначальный файл.
Он по идее должен в оперативке висеть.
Хотя я хз)
 

Rdenwer

Client
Регистрация
14.10.2010
Сообщения
254
Благодарностей
61
Баллы
28
Я делал так
Разбивал файл на множество отдельных прогой KWK
Затем брал рандомную строку из рандомного файла (все в одной папке)
 

nikakoss

Client
Регистрация
22.04.2011
Сообщения
127
Благодарностей
3
Баллы
18
я не спец.
Но попробуй сначала макрос "Взять блок из файла" и выдерни содержимое всего файла, просто указав путь к нему. Остальные параметры по дефолту.
А потом регуляркой "Взять строку" парси уже результат первого макроса, как ты парсишь сейчас изначальный файл.
Он по идее должен в оперативке висеть.
Хотя я хз)
ну я тоже так рассуждал, сделал, не получилось.

Я делал так
Разбивал файл на множество отдельных прогой KWK
Затем брал рандомную строку из рандомного файла (все в одной папке)
Тоже не получится, у меня 570 файлов которые берутся рандомно с 80к строк в каждом (тоже рандомно), поэтому если еще и их разбить.. тяжело будет.
Вопрос открыт!
 

step85

Client
Регистрация
19.02.2010
Сообщения
1 839
Благодарностей
287
Баллы
83
Задача состоит только в том чтобы брать строки рандомно и пересохранять их без изменений? Тогда проще выполнить рандомизацию строк сторонней программой.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Если задача перемешать строки, то в зенно для этого есть отдельный макрос:

{-Random.Shuffle-|-{-File.GetString-|-путь к файлу-|-all-|-true-}-|-{-String.Enter-}-}

И потом результат этого дела записываем в нужный нам файл.
 

tonic

Client
Регистрация
07.08.2011
Сообщения
103
Благодарностей
50
Баллы
28
Сталкивался с подобной проблемой. Лучший способ ускорить работу шаблона в данном случае это - расбить файл и брать рендом строку из рендом файла. Для себя расбивал по 1000 строк. Хоть рабочая папка и открывается долго браузером (из-за большого кол-ва файлов), на программном уровне этого не заметно. Вот программа для расбивки текста, да и вообще полезная прога для текстовиков.
 

Вложения

  • Спасибо
Реакции: nikakoss

nikakoss

Client
Регистрация
22.04.2011
Сообщения
127
Благодарностей
3
Баллы
18
Всем спасибо, решил вопрос, действительно, разбиванием файла на кучу файлов по 1к строк в каждом. Теперь все быстро генерит.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)