В программе python я разбираю двоичный файл, чтобы построить для него таблицу символов. Затем я хочу связать адреса с символами. На данный момент моя таблица символов представляет собой отсортированный список из Symbol
объектов, которые сделаны из адреса, длины и имени, а поиск по символу наивно итератируется над символами. Поиска состоит в нахождении какого символ содержит заданный адрес, другие слова:Какая структура данных используется для таблицы символов?
addr >= symbol.addr and addr < symbol.addr + symbol.length
Поскольку программы я анализирую получают очень большими, я сталкиваюсь перформанс проблема, и ищу более эффективный (с точкой зрения сложность). Я посмотрел на пакет bisect
, это правильный пакет для использования в этом случае? Как бы вы это реализовали?
'bisect' просто бинарный поиск, который, вероятно, не является полезным, если ваш символ таблица сортируется. Какие поисковые запросы вы делаете в таблице символов? Можете ли вы просто использовать словарь, который отображает имя символа в объект символа? – Blender
@Blender Я отредактировал мой вопрос, чтобы уточнить. –
@Blender no Я не могу, потому что мой поиск состоит в том, что он обнаруживает, что символ «содержит» заданный адрес, как показано в отредактированном вопросе –