Здравствуйте, TailWind, Вы писали:
TW>Где для каждого ID от 0 до 0x5000000 хранится небольшой блок данных (от 0 до 80 байт, но может быть и больше)
Что значит "до 80 байт, но может быть и больше"? До чего все-таки? 256?
Можно сделать большой файл, оставив максимальный размер записи. Обращаться по индексу.
Готовый файл можно обработать, выкинув свободные куски. Первые 0x5000000 четырехбитных слов — индекс.
TW>>Где для каждого ID от 0 до 0x5000000 хранится небольшой блок данных (от 0 до 80 байт, но может быть и больше) VF>Что значит "до 80 байт, но может быть и больше"? До чего все-таки? 256?
Хотелось бы предусмотреть неограниченное увеличение
Давайте заложим 10% накладных расходов на всякие списки
Раз уж я решил не хранить блок данных одним куском
VF>Можно сделать большой файл, оставив максимальный размер записи. Обращаться по индексу.
Я хочу сделать в начале файла таблицу длинной N (макс ID)
На каждый ID одна запись
Если для этого ID нет данных, там -1
Если для этого ID есть только одно число (8 байт) пишем его в таблицу
Если больше 1го числа, то в таблице указывается индекс больше размера таблицы и там уже хранятся связные списки, которые сейчас нужно продумать
VF>Готовый файл можно обработать, выкинув свободные куски. Первые 0x5000000 четырехбитных слов — индекс.
ммм
Для данной задачи пост обработка после, чтобы уменьшить объём, не имеет смысла
Лучше не допускать, чтобы файл слишком сильно раздувался в процессе (в рамках 10%)
Здравствуйте, TailWind, Вы писали:
AG>>Да, если есть необходимость, чтобы всё было в конкретном файле, думаю, идея в том, чтобы пережить перезапуск программы. TW>С одной стороны нужен save, load TW>С другой стороны в память 32-bit C++ application это не лезет