Очень большой txt файл список, скорость.

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
Интересный вопрос. Планируется собрать в один файл (список) - ссылки. Будет Примерно 50 млн. строк. Замедлится ли работа при этом? Файл будет расти при записи, или же нужно разбивать, а затем склеить их?
 
  • Спасибо
Реакции: Hannes

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Если через список/таблицу работаете - будут проблемы, если просто пишете строку через "запись текста в файл" то проблем не должно ожидаться
 

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
Спасибо, попробую.
 
  • Спасибо
Реакции: Hannes

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Т.е получется , что лучше создать список, но без привязки к файлу? Например, в сделаю цикл 1000 раз (соберется 1000 строк). Затем эти 1000, которые "в списке" - отправить в "запись текста в файл"
Да так лучше будет в вашей ситуации
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
А проверки какие то с этим файлом планируются? Или же это просто файл свалка, в который записываются все результаты?
 

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
А проверки какие то с этим файлом планируются? Или же это просто файл свалка, в который записываются все результаты?
Да, потом удалить дубли, и пустые строки. В конце самом.
Начал эксперименты в файловом режиме. Когда файл перевалил за 900 мб. в нем было около 3 млн. строк, то Project начал выдавать ошибку чтения, недоступности файла, все время отставало записывание в файл. В зенке не решился запускать. Вобщем решил частями делать.
 
  • Спасибо
Реакции: Hannes и LightWood

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Да, потом удалить дубли, и пустые строки. В конце самом.
Начал эксперименты в файловом режиме. Когда файл перевалил за 900 мб. в нем было около 3 млн. строк, то Project начал выдавать ошибку чтения, недоступности файла, все время отставало записывание в файл. В зенке не решился запускать. Вобщем решил частями делать.
В таком случае вам придётся эти этапы реализовывать вне списков ZP, например написав оптимизированный под эти задачи снипет C#
 

White trash

Client
Регистрация
09.06.2014
Сообщения
782
Благодарностей
346
Баллы
63
У меня однажды из-за бага текстовый файл перевалил за 200 мегабайт - с трудом но тянул.
 

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
Уже 4 дня экспериментирую. Проблемы наблюдаются с большими файлами. Но не понятно как и почему.
К примеру, 4 раза проект выполнился нормально. Файл на выходе 1 ГБ. Строк 12 млн, иногда 8-9.

Сегодня, в Постере начал проект сбиваться. Не пойму, файл не большой 250 мб, 4 млн строк. думал может забанили на сайте -нет.
Проверил в мейкере:



Удалил файлы, начал по новой, - все нормально.
 
  • Спасибо
Реакции: Hannes

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Вопрос сколько свободной оперативки в момент наличия проблемы и какими экшенами добавляете текст
 

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
Вопрос сколько свободной оперативки в момент наличия проблемы и какими экшенами добавляете текст
Работаю Get запросами, без браузера. Списки без привязки к файлу, запись в файл через Экшн "Записать в файл". Свободной оперативы всегда где то 4-5 Гб.
Шаблон работает в 100-130 потоков. Проц скачет, то 100% нагрузки, потом 20% - думаю это из за большого количества записей в файл.

Уже думал может Ram диск создать и туда сохранять?
 
  • Спасибо
Реакции: Hannes

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
попробуйте использовать запись через списки. с привязкой списка к файлу
 

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
Интересное наблюдение. Парсинг в 80-100 потоков, Запись идет в 5 файлов на диске, в финале получаются по 1ГБ, больше не рискую. Файлы на выходе содержат по 20 млн. строк. При копировании файла на другой ж. диск, скорость копирования 3-4 мб/сек, пустых строк в файле около 1%.

Проект переместил на другой физ. диск (постарее), скорость перемещения с него 800-2000 Кб/сек. Пустых строк около 5% от общей массы.

Такое ощущение что запись идет по всему жесткому диску. Боюсь представить что будет при еще большем увеличении потоков.

Так что если у вас проект работает с такими объемами, нужно стремиться сделать цикл допустим в 100 раз и забивать значения в список без привязки к файлу. Затем когда цикл закончится, то объединить эл.списка, а уже затем - записать в файл. Так думаю будет полегче винту.
 
  • Спасибо
Реакции: Atlas и Hannes

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
вот только потоки могут конфликтовать друг с другом за права записи в файл
 

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