0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
||||||
1 | ||||||
Прочитать большой текстовый файл > 1Гб23.12.2015, 23:35. Показов 1897. Ответов 18
Метки нет (Все метки)
Пытаюсь прочитать большой текстовый файл. 1Гб и более! Строки без пробелов, разделены "\n"
Пример файла: "line1\n line2\n line3\n" Падает на ошибке сегментирования. Учусь кодить на питоне, а тут потребовалось маленькую функцию на си написать. Башка уже не варит, трубадомшатал
0
|
23.12.2015, 23:35 | |
Ответы с готовыми решениями:
18
Файл: Скопировать текст в другой текстовый файл файл, но чётные строки должны быть с большой буквы... Как прочитать большой файл Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту. Dev C++ |
23.12.2015, 23:46 | 3 |
Сообщение было отмечено ReesL как решение
Решение
1. Создавай массив в куче (для такого объема стека не хватит).
2. Зачем загружать в память весь файл? Разве нельзя его обрабатывать построчно или порциями?
1
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
|
23.12.2015, 23:46 [ТС] | 4 |
Мне он как раз в оперативной памяти нужен. Для скорости и чтобы жесткий не насиловать. Динамически это использую malloc? Если не трудно запили строчку.
0
|
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
|
|
23.12.2015, 23:53 | 6 |
Сообщение было отмечено ReesL как решение
Решение
Да, например.
Примеров на форуме - тьма. Сделай поиск по malloc.
Добавлено через 2 минуты А ты по этому файлу бегаешь туда-сюда? Пользовательскую систему насиловать загружая оперативку нормально? Мап файла (либо его части) в память еще можешь сделать.
1
|
Velesthau
|
23.12.2015, 23:55
#8
|
0
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
|
23.12.2015, 23:58 [ТС] | 9 |
Почему неудачная? Скорость то возрастает в разы. Чем прочитать найти закрыть вернуть. Там миллиарды запросов к массиву.
Спс, уже ищу.
0
|
24.12.2015, 00:05 | 10 |
Сообщение было отмечено ReesL как решение
Решение
1. Если каждая программа будет хавать память "по потребности", то ее (памяти ) просто не хватит. Наверняка можно придумать способ, как обойтись 10% (от объема файла) или даже меньшим без заметного замедления.
1
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
|
24.12.2015, 00:10 [ТС] | 11 |
Вот ты о чем Согласен конечно. Но в моем случае, я готов пожертвовать 1-2 гигами оперативки. Обойтись может и получится, на это время нужно. Маны курить и тп. Мне по-быстрому запилить))
0
|
24.12.2015, 00:12 | 12 |
Сообщение было отмечено ReesL как решение
Решение
2. Система может просто не дать столько памяти и тогда задача вообще не будет работать.
3. Память может свопиться и в результате задача будет работать медленней, чем при использовании небольшого объема памяти.
1
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
|
24.12.2015, 00:17 [ТС] | 13 |
На питоне эта реализация съедает 2-3Гб. Но загружается много сторонних/тяжелых модулей. На си, я думаю/надеюсь, меньше должно быть. Тут 20Кб кода + файл гиговый.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
24.12.2015, 00:30 | 14 |
Сообщение было отмечено ReesL как решение
Решение
тогда посмотри в сторону файлов проецируемых в память
открываешь файл, проецируешь его в память, и дальше работаешь как с обыкновенным файлом, а система сама решит что ей быстрее
1
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
|
24.12.2015, 00:43 [ТС] | 15 |
Тут уже почти готово. Пара строчек осталась и все будет работать. Пока парюсь с malloc. 100% все легко, опыта нет
0
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||||||
24.12.2015, 14:01 | 16 | |||||
Сообщение было отмечено ReesL как решение
Решение
Действительно, пара строчек. Если нужно ссылаться на строку по номеру, заполните ещё массив указателей на строки.
PS. Насчет целесообразности сразу читать весь большой файл в память - это целиком зависит от условий поставленной задачи. В иных случаях именно так и нужно.
1
|
24.12.2015, 15:42 | 17 |
Сообщение было отмечено ReesL как решение
Решение
Банальная истина, даже говорить не о чем. В программировании программа всегда зависит от условий поставленной задачи.
За 20+ лет ни разу не было , чтобы было именно так и только так. Зато ситуации, когда при росте файла программа переставала работать случались. Приходилось менять алгоритмы или даже формат файла.
1
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
24.12.2015, 18:25 | 18 |
Сообщение было отмечено ReesL как решение
Решение
Насчет "только так" речи и не было. Всегда есть варианты. А о целесообразности ТС вроде бы пояснил. 1) Памяти достаточно. 2) К данным постоянно будут идти разбросанные по всему файлу запросы.
1
|
0 / 0 / 0
Регистрация: 04.01.2014
Сообщений: 10
|
|
24.12.2015, 23:13 [ТС] | 19 |
Парни всем спсс за помощь и потраченное время Решил проблемку банально. На стэкоувэфло нашел готовый вариант кода. Всех с наступающим))
можно закрывать
0
|
24.12.2015, 23:13 | |
24.12.2015, 23:13 | |
Помогаю со студенческими работами здесь
19
Файл: Хочу прочитать текстовый файл в textbox, но он выводит какой то бред... Создать текстовый файл из 5 строк, прочитать созданный файл Разделить большой текстовый файл на множество файлов Как сохранить большой текстовый файл в txt? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |