Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549

Как быстро обрабатывать текст из файлов больших объёмов

16.07.2014, 16:16. Показов 2302. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, искал как быстро читать текст из файлов больших объёмов, наткнулся на функцию:

C++
1
long fd = open(sFilePath.c_str(), O_RDONLY | O_BINARY);
описывается, что она находится в: #include <fcntl.h>, файл заинклюдил, но билдер функцию не находит
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2014, 16:16
Ответы с готовыми решениями:

Как хранить и обрабатывать массив больших элементов
Всем привет Есть некоторый буфер объёма 1 350 000 байт (значение конкретное в конкретном времени и месте, в принципе, возможно...

Обработка больших объёмов данных
Есть выделенная виртуальная память ReadCount=6 000 000 000 Buffer = (U16 *)VirtualAlloc(NULL, ReadCount*4, MEM_COMMIT,...

Алгоритмы сортировки больших объёмов данных
Здравствуйте, столкнулся со следующей проблемой: Имею бинарный файл, в котором хранится матрица из чисел размером примерно 10000 на 40....

17
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,880
Записей в блоге: 12
16.07.2014, 16:27
C++
1
#include <io.h>
вообще-то еще нужен.

Насколько большой объем файла?
1
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
16.07.2014, 17:22  [ТС]
780 мб

Добавлено через 52 минуты
С этим я справился) Как 24 миллиона строк можно избавить от дубликатов
0
1 / 1 / 1
Регистрация: 14.03.2014
Сообщений: 46
17.07.2014, 09:12
Брать в основу любой понравившийся метод сортировки и сравнивать строки, а найдя совпадения, удалять одну.
0
17.07.2014, 10:26

Не по теме:

Цитата Сообщение от hiphone Посмотреть сообщение
Как 24 миллиона строк можно избавить от дубликатов
Завуалированная форма "Как два байта переслать"?

0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
17.07.2014, 13:12  [ТС]
Единственный вариант, который я придумал: взять весь файл в память, потом построчно читать его же и уже фильтровать с теми строками, что в памяти, но мне кажется это очень долго будет


Будет ли быстрее работать с THashedStringList?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
17.07.2014, 17:29
Цитата Сообщение от hiphone Посмотреть сообщение
но мне кажется это очень долго будет
А проверить что мешает? Там уже и думать дальше будешь.

THashedStringList конечно пошустрее будет, но опять же, в какой мере - зависит от конкретных операций, что ты собираешься над ним совершать.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.07.2014, 17:53
Цитата Сообщение от BRcr Посмотреть сообщение
THashedStringList
навряд ли в нем поместится.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
17.07.2014, 17:57
Цитата Сообщение от hiphone Посмотреть сообщение
Как 24 миллиона строк можно избавить от дубликатов
складывать в std::map в качестве ключа, если память не лопнет.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.07.2014, 18:09

Не по теме:

Цитата Сообщение от uglyPinokkio Посмотреть сообщение
складывать в std::map в качестве ключа, если память не лопнет.
Думаю лопнет ...


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

Проблема лишь в выбори хеш ф-ции и можно ли будет "сохранить" положение срок, ибо я так и не понял какого типа файл - текстовый или бинарный.
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
18.07.2014, 02:48  [ТС]
файл текстовый

Добавлено через 5 часов 0 минут
Всё получилось, использовал вектор. Файл 500мб читался и чистился от дублей 10 минут

C++
1
#include <vector>
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.07.2014, 07:39
А что ты делал с вектором? Удалял из него элементы-дубли?
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
18.07.2014, 12:44  [ТС]
Да, удалял дубли строк
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
19.07.2014, 09:13
Тогда лучше возьми std::list - должно куда быстрее отработать...
1
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.07.2014, 11:49
Цитата Сообщение от BRcr Посмотреть сообщение
Тогда лучше возьми std::list - должно куда быстрее отработать...
А может std::set<> тогда уже, только есть сомнения что не будет быстрее, а вот память с экономит, если много повторений встречается.
1
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
19.07.2014, 14:08  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
А может std::set<> тогда уже, только есть сомнения что не будет быстрее, а вот память с экономит, если много повторений встречается.
не будет быстрее чем list или vector?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.07.2014, 14:45
Ну достоинство вектора быстрая вставка в конец и дальнейший быстрый доступ при переборе с записью в файл, но тут проигрыш в сортировке.

В std::set<> сортировка не нужна и вставка сразу будет в "нужно место" с игнорированием совпадений (потенциальная экономия на этом памяти если совпадений много), но тем не менее вставка идет дольше (из-за поиска места вставки) и потеря при переборе при записи в файл ибо перебор через итераторы по set<> дольше перебора в std::vector<>
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
19.07.2014, 18:20
Да просто проверь и set, и list - что быстрее или экономичней окажется, то и используй.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2014, 18:20
Помогаю со студенческими работами здесь

Выбор БД для больших объёмов данных
Собственно, планируется запись порядка 100-200к строк новостных лент (включая текст новостей) в сутки. Далее выборка по первичному ключу,...

Обновление больших объёмов данных(150к полей)
Доброго всем времени суток. Встала задача обновления больших объёмов данных - парсинг большого xls-файла и записи данных в MySQL....

Какой массив использовать для хранения больших объёмов информации?
В целях саморазвития пишу программу для поиска дубликатов файлов по названию. Алгоритм типа такого: в отдельном потоке происходит запись...

Как в excel 2007 обрабатывать ячейки, содержащие текст, заключенный в кавычки?
как в excel 2007 обрабатывать ячейки, содержащие текст, заключенный в кавычки? к примеру - ячейка содержит текст (без кв.скобок). И когда...

Как обрабатывать введенный пользователем текст, для дальнейшего его сохранения в MySQL
Всем привет, подскажите как мне обработать текстовое сообщение пользователя, так что бы в дальнейшем не возникало проблем с сохранением его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru