如何将专用字符串映射到指定的整数

tra*_*ing 6 c++ hash algorithmic-trading low-latency

我正在做一些金融交易工作.我有一组股票符号,但是他们有很明显的模式:它是两个字符AB,AC AD而当月这是一个四位数字:1503,1504,1505.一些例子是:

AB1504
AB1505
AC1504
AC1505
AD1504
AD1505
....
Run Code Online (Sandbox Code Playgroud)

由于这些字符串设计得很好,我希望将每个字符串映射(散列)为一个唯一的整数,这样我就可以使用整数作为数组索引来快速访问,因为我的系统中有很多检索和std::unordered_map或任何其他哈希映射不够快.我有测试显示一般哈希映射是100纳秒的延迟级别,而数组索引总是低于100纳米.我的理想情况是,例如,AB1504映射到整数1,AB1505 映射到2....,然后我可以在里面创建一个数组,以更快地访问与这些符号相关的信息.我试图弄清楚一些哈希算法或其他方法可以实现我的目标,但无法找到.你们对这个问题有什么建议吗?

Lav*_*van 0

如果将字符串解析为混合基数,前 2 个基数 26 数字,然后是 4 个基数 10 数字,您将很快获得每个字符串的唯一索引。唯一的问题是你是否可能得到一个稀疏的数组。

在计算索引时,您始终可以对数字重新排序,以最大程度地减少上述问题。

由于数字实际上是月份,因此我会计算从第一个条目开始的月份数,并将其乘以前缀中的 2 位基数 26 数字。

希望此刻在我的平板电脑上打字的您能从中明白一些道理。:D