
Последние записи
- Вывод текста с переносами строк в PHP
- Кодировка в INDY 10 (как бороться с «???»)
- Переход по ссылке при клике на кнопку, счётчик кликов по кнопке и число переходов по ссылке на ява скрипт
- Сравнение двух диапазонов ячеек Excel на полное совпадение данных
- С++. Как напечатать в консоли два столбца?
- Конвертирование PNG в JPG на Delphi
- Можно ли, название сайта которое находится в шапке заключать в HTML тег h1 или h2 h3 h4 h5 h6?
- как бороться со знаками вопросов при проблеме с кодировкой в INDY 10 Delphi ?
- Связать ProgressBar + скорлинг в Texbox
- RichEdit и выгрузка в RTF-файл (добавление в конец файла)

Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Июл
Как эффективнее обрабатывать большой файл по кускам?
Posted by obzor under Win Api
Есть файл во много раз больший оперативной памяти. Собираюсь реализовать алгоритм, который загружает часть файла, помещающуюся в оперативную память и там обрабатывает. Как сделать это с максимальной эффективностью по времени на C++ под Windows? Mapping файла на оперативную память? Если так. То как определить размер куска, который поместится в оперативную память?
Читайте файл кусками, кратными 256К и без буферизации (FILE_FLAG_NO_BUFFERING) и в память, которая закреплена в памяти (не подкачивается).
Mapping файла не имеет смысла, если между частями не нужна синхронизация, т.е. они не должны обмениваться данными. В общем случае я бы сделал такой алго:
1. GetProcessAffinityMask() — получили кол-во ядер CPU.
2. Умножить пункт 1 на 2..
3. CreateThread() — создать кол-во потоков по результату пункта 2.
4. GetFileSizeEx() — узнать размер файла.
5. Разделить размер файла на кол-во тредов из пункта 3.
6. В каждом потоке Thread выставить указатель на чтение SetFilePointerEx() кратное пункту 5.
7. Все потоки обрабатывают свою часть данных.
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту

пеллетные котлы

Пеллетный котел Emtas

Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)