Я занимаюсь финансовыми работами. У меня есть набор символов запаса, но у них очень четкая схема: состоит из двух символов AB
, AC
AD
и текущий месяц, который представляет собой четырехзначное число: 1503
, , 1505
. Вот некоторые примеры:Как сопоставить специализированную строку в указанное целое
AB1504
AB1505
AC1504
AC1505
AD1504
AD1505
....
Поскольку эти строки так хорошо продуманы с рисунком, я хочу, чтобы отобразить (хэш), каждый из строки в уникальное целое число, так что я могу использовать целое число в качестве индекса массива для быстрого ACCESSING, так как у меня много изъятий внутри моей системы, и std::unordered_map
или любая другая карта хэша не достаточно быстра. У меня есть тесты, показывающие, что общая хэш-карта - это уровень латентности в сто-наносекунд, в то время как индексирование массива всегда меньше 100 нанометров. Моим идеальным случаем было бы, например, AB1504
карты для целого числа 1
, AB1505
maps to 2
...., тогда я могу создать массив внутри, чтобы получить доступ к информации, относящейся к этим символам, намного быстрее. Я пытаюсь выяснить некоторые алгоритмы хеширования или другие методы, которые могут достичь моей цели, но не смогли узнать. У вас есть предложения по этой проблеме?
Одна простая идея: посмотрите на свой шаблон как шестнадцатеричное (или более высокое воображаемое основание) число и преобразуйте его в десятичную, чтобы получить уникальный номер. хотя он не начинается с 0, и они не являются последствием. – Emadpres
Вы также можете попробовать что-то вроде сжатия данных (zlib, Huffman, lzw и т. д.) и предварительно делить данные декомпрессии (повторно использовать его для всех ваших сообщений или «развиваться» он «детерминированно по каждой стороне связи), так что сообщения не имеют« заголовочных »данных в качестве служебных. –
У вас есть дополнительная информация о формате чисел? Как две первые цифры представляют годы после 2000 года? Что означают буквы, если что-нибудь? Вам нужно обращаться к вещам раньше, чем AA1501 (или аналогичным)? – holroy