Я хочу кодировать местоположение - скажем, FILE/LINE - каждый раз, когда я занимаюсь распределением памяти. Это более 3000 в моей кодовой базе, поэтому я действительно не хочу его жестко кодировать.C: эффективное кодирование местоположения кода
Я использовал макрос, который просто проходит в ФАЙЛ, ЛИНИЯ, который прекрасно работает.
Теперь я хочу сохранить это с каждым распределением, чтобы он был сжат. Я использовал минимальный совершенный хеш для FILE, который делает пару (FILE, LINE) подходящей в 32-битном целом.
Однако вычисление MPH при каждом распределении является слишком дорогостоящим (в основном потому, что оно проходит через строку, вычисляющую первичный хэш). Поскольку все строки являются постоянными, MPH является постоянным и все постоянным, должен быть более быстрый способ вычислить это.
В любом случае, кто-нибудь знает, как лучше вычислить местоположения кодов, чтобы их можно было искать и хранить эффективным образом (я также посмотрел на макрос PP_COUNTER библиотеки boost)? Спасибо!
Почему бы вам просто не сжать файл после того, как закончите? – Barmar
Напишите программу, которая предварительно препроцессирует ваш код и вводит уникальный номер в каждом вызове функции распределения, плюс создает статическую таблицу, отображающую числа обратно в файл, пары линий. Тогда вам не нужно хеширование во время выполнения. – zwol
Добавить статическую переменную, содержащую 'MPH (FILE)', поэтому она просто вычисляется один раз для каждого файла. Затем соедините это с 'LINE', когда вы делаете выделение. – Barmar