37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
|
||||||
1 | ||||||
Есть очень много маленьких текстовых файлов необходимо слить в один файл05.01.2014, 03:03. Показов 3341. Ответов 13
Метки нет (Все метки)
Очень много маленьких файлов размером от 500 КБ до 90 МБ. Максимальная длина строки в файлах 80 символов.
Всего таких файлов может быть от 2 гигабайт и более. Посоветуйте, как подступиться к программе чтобы она работала максимально быстро. Вот что я намудрил пока. Чтение и запись с помощью С++ отпадает слишком медленно или я не знаю как по другому. Сижу под Win 7.
0
|
05.01.2014, 03:03 | |
Ответы с готовыми решениями:
13
Слить много текстовых файлов в несколько, по названию Много маленьких файлов .txt в один и отправка в excel Как слить несколько файлов в один файл? Разбить один m-файл на кучу маленьких m-файлов |
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
05.01.2014, 03:38 | 2 |
Когда-то выяснял какими функциями быстрее всего работать с файлами. Получилось, что самые быстрые - это С-функции пстрочного чтения/записи: fgets(), fputs(). Файл нужно открывать в бинарном режиме, это убыстряет работу этих функций (почему - не знаю, но факт). Насколько знаю, работа с динамической памятью - это медленно, поэтому лучше использовать массив на стеке под размер строки (тем более, размер известен).
1
|
37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
|
|
05.01.2014, 03:41 [ТС] | 3 |
0
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|||||||||||
05.01.2014, 04:00 | 4 | ||||||||||
Если бы пересели на *nix, то решение вашей проблемы:
1
|
05.01.2014, 04:26 | 5 |
Потоками, разумеется, лучше не пользоваться. Никаким "построчным" чтением тоже.
Используйте Memory Mapping (WinAPI) - открываете Src файл на чтение и "одним глотком" переписываете в Dst. Если файлы маленькие, то основное время уйдет не на копирование, а на сам поиск/открытие/закрытие. Если необходимо, добавляйте в Dst символ новой строки после каждого записанного файла.
1
|
37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
|
||||||
05.01.2014, 04:43 [ТС] | 6 | |||||
Написал вот такую штуку. Медленней чем мой код. Посмотри пожалуйста может что то не так сделал.
Читал об этом. Но на моем уровне задача неподъемная. Если бы показали маленький пример был бы благодарен!
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
05.01.2014, 05:29 | 7 | |||||
Насчёт меделнней или быстрей ничего нового не скажу, что знал и пробовал - изложил. Забыл только сказать, что в Release нужно делать.
1
|
37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
|
|
05.01.2014, 06:07 [ТС] | 10 |
0
|
37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
|
|||||||||||
05.01.2014, 06:16 [ТС] | 11 | ||||||||||
Угу. В Release запускал. С меня, правда, такой тестер ) Переключил на Релиз и прогнал пару раз. Измеряю время вот так:
код короче намного ) Буду теперь только так юзать
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
05.01.2014, 06:27 | 12 | |||||
Я вот на таком коде пробую (в студии 10). В файле 1000000 строк, размер каждой - около 45 символов. Размер файла 46.7мгб.
Если построчно: Debug - 0.83, Release - 0.5. Если блоком, размером в файл: Debug - 0.84, Release - 0.813. Получается, что самое быстрое - построчно, и именно в Release (оптимизация там для построчного лучше сделана или что, не знаю. Оптимизация выставлена - максимальная скорость). Кликните здесь для просмотра всего текста
0
|
37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
|
|
05.01.2014, 13:12 [ТС] | 14 |
Спасибо! Но хотел получить что нибудь для понимания, а потом уже с наработанными деталями. Но все равно спасибо, код там не сложный некоторые функции погуглить.
0
|
05.01.2014, 13:12 | |
05.01.2014, 13:12 | |
Помогаю со студенческими работами здесь
14
Слить много контейнеров в один Один большой класс или много маленьких? Один длинный Regex или много маленьких? Чтовыгоднее один большой сайт или много маленьких Проверка наличия трех текстовых файлов на диске и объединения их в один файл Составить программу, считывающую информацию из текстовых файлов в один нетипизированный файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |