Re[3]: Быстрый поиск байта в фрагменитованном файле
От: watchmaker  
Дата: 23.12.15 19:28
Оценка: +1
Здравствуйте, _smit, Вы писали:


_>Поиск выглядит так:

_>            {return (value.data_offset_pos + value.fragment_length) <= ref.data_offset_pos;});

И не боишься передавать в lower_bound компаратор нарушающий strict weak ordering?

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

Считаю, проще будет если использовать только последний параметр из трёх. Тогда выполнение функции сразу начинается с вызова lower_bound, а все проверки уже делаются для возвращённого итератора. Сейчас же есть как минимум несколько избыточных проверок на частные случаи, часть из которых к тому же маскирует проблему с плохим компаратором.

Уж лучше вместо них кеширование последнего ответа добавить, чтобы поиск не делать, если ожидается последовательный доступ к содержимому.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.