|
15 / 0 / 2
Регистрация: 27.11.2012
Сообщений: 93
|
|
Обработка большого массива данных на C++10.11.2014, 11:18. Показов 7744. Ответов 37
Метки нет (Все метки)
Суть проблемы. На работе, дали задание проработать 1 большой файл (вывести графики результата анализа и т.д.).
Файл: двоичный. ~ 71 Мб ОЗУ: 512 Мб В итоге там получается работа с массивом структуры с over 1 млн. элементов в нем. Естественное, стандартная обработка всего массива, в виде пробега в цикле выполняется "нууу очень" долго. Я хотел бы узнать/спросить о различного рода существующих библиотеках, алгоритмах обработки больших данных в c++ и т.п. Прошу поделиться соображениями,ссылками, названиями и т.п. Буду весьма признателен.
0
|
|
| 10.11.2014, 11:18 | |
|
Ответы с готовыми решениями:
37
Обработка большого массива Тип данных для очень большого массива Обработка данных в виде массива структур средствами языка С++ |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 15.11.2014, 08:03 | |
|
А зачем нужно считывать все блоки для определения их количества? Можно же разделить размер файла на размер блока и получить max_i. Сами блоки тоже можно разом считать.
0
|
|
|
15 / 0 / 2
Регистрация: 27.11.2012
Сообщений: 93
|
|||
| 16.11.2014, 09:21 [ТС] | |||
|
Мне бы как-нить памяти дополнительно выделить, а то прога выделят какое-то количество и зависает
0
|
|||
|
Заблокирован
|
|||
| 16.11.2014, 09:24 | |||
![]() Добавлено через 1 минуту
0
|
|||
|
15 / 0 / 2
Регистрация: 27.11.2012
Сообщений: 93
|
|||
| 16.11.2014, 14:00 [ТС] | |||
|
0
|
|||
|
Заблокирован
|
||
| 16.11.2014, 14:25 | ||
Если падает просто, то ставь new в try / catch и лови исключения с вероятной последующей обработкой. Смотри, какие исключения именно кидает.
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 16.11.2014, 14:29 | |
|
Размер структуры фиксирован, его можно сразу рассчитать и разделить размер файла на размер структуры, sizeof даёт размер сам по себе без какого-либо чтения.
Памяти можно выделить даже больше, чем доступно, там же виртуальная память используется, что-то будет выгружено на диск. И если размер файла 70 Мб, то это не так много.
0
|
|
|
Заблокирован
|
|
| 16.11.2014, 18:21 | |
|
nmcf, да ТС походу под кайфом посты лепит, какой - то не связанный бред
0
|
|
|
15 / 0 / 2
Регистрация: 27.11.2012
Сообщений: 93
|
|||
| 17.11.2014, 10:30 [ТС] | |||
|
Добавлено через 13 часов 51 минуту Загружается в память нормально(спокойно наблюдается в диспетчере как с ~4 Мб процесс забирает до 100 Мб памяти -> во время считывания двоичного файла.) Но вот как это обрабатывать, как это запихнуть в статический элемент Chart для вывода графика, там нуу очень много точек получается. До сих пор 0 идей. Пробовал сделать 10 нитей, распараллелить так сказать, все равно как-то виснет, да еще и проблема с синхронизацией владения компонентом между нитями(конкретно Chart). p.s. использовал CreateThread().
0
|
|||
|
Заблокирован
|
|
| 17.11.2014, 10:36 | |
|
Архив проекта в студию. Так же опиши по пунктам, что на данный момент на твой взгляд в нём работает не верно и в каких аспектах сего кода ты просишь помощи.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 17.11.2014, 10:39 | |
|
0
|
|
|
Заблокирован
|
|
| 17.11.2014, 10:51 | |
|
0
|
|
| 17.11.2014, 11:29 | |
|
Забыть про потоки и динамические массивы при чтении. Ничего из этого для обработки простейшей таблицы не требуется. 70 Mb - это "ни о чем". Отобразить файл на память и обрабатывать. Sin (если промеры покажут здесь задержку) можно посчитать один раз заранее (с нужным шагом) и оформить таблицей. Результат писать в другой файл потоком.
0
|
|
|
15 / 0 / 2
Регистрация: 27.11.2012
Сообщений: 93
|
||
| 18.11.2014, 17:35 [ТС] | ||
|
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 18.11.2014, 17:44 | |
|
Разом загрузить содержимое в массив структур без отображаемых файлов.
0
|
|
| 18.11.2014, 18:33 | ||
|
Вот в этой теме: "Есть очень много маленьких текстовых файлов необходимо слить в один файл" я выкладывал пример работы с MMF. Добавлено через 6 минут Собственно, если сделать cast к указателю на ваш тип данных, то можете обращаться к нужной структуре прямо по индексу.
0
|
||
|
15 / 0 / 2
Регистрация: 27.11.2012
Сообщений: 93
|
||||||||||||
| 20.11.2014, 10:37 [ТС] | ||||||||||||
|
Например: Кликните здесь для просмотра всего текста
Ну вот как-то так. Код следующий:
0
|
||||||||||||
| 20.11.2014, 13:11 | |||||||||||
|
1. На pView надо сделать приведение к нужному типу (сейчас это void*)
2. Структура должна иметь корректное выравнивание (либо в опциях компилятора, либо #pragma) Типа этого:
+ еще пример работы с MMF - чтение заголовка PE-файла (все структуры из <WINNT.H>):
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 31.03.2020
Сообщений: 3
|
|
| 28.02.2022, 12:22 | |
|
используйте Blockread или файлы отображаемые в память
0
|
|
| 28.02.2022, 12:22 | |
|
Обработка большого объема данных Обработка большого объёма данных (10гб) Обработка большого объема данных (теги сайта)
Многопоточная обработка большого массива через ThreadPool с возможностью остановки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|