Мне нужно найти конкретную запись в большом файле.Поиск будет выполняться на микропроцессоре (ESP8266), поэтому я работаю с ограниченным объемом памяти и оперативной памяти.
Список выглядит так:
BSSID,data1,data2
001122334455,float,float
001122334466,float,float
...
Я думал об использовании индекса для ускорения поиска.Данные статичны, и индекс будет построен на компьютере, а затем загружен в микроконтроллер.
То, что я сделал до сих пор, очень упрощено.
Я создал индекс первого байтаBSSID и указывает на первое и последнее значения с этим префиксом BSSID.
Производительность ужасная, но индексный файл очень маленький и использует очень мало оперативной памяти.Я хотел бы пойти дальше с этим методом, взглянув на первые два байта, но индексная таблица будет в 256 раз больше, в результате чего получится таблица размером 1/3 файла данных.
Этоиндекс с первым методом:
00,0000000000,0000139984
02,0000139984,0000150388
04,0000150388,0000158812
06,0000158812,0000160900
08,0000160900,0000171160
Какой алгоритм индексации вы предлагаете мне использовать?
РЕДАКТИРОВАТЬ:
Извините, я не сделал 'До этого достаточно включить фон.
Я храню данные и индексный файл на флэш-памяти чипа.На данный момент у меня есть 30000 записей, но это число может расти до тех пор, пока не будет достигнут предел мимерности фишек.Этот набор действительно статичен, когда хранится на микроконтроллере, но может быть обновлен во второй момент с помощью компьютера.
Данные не распределяются симметрично между индексами.
Моя цель - найти хороший компромиссмежду скоростью поиска, размером индекса и используемой оперативной памятью.