我可以比朴素哈希表更快地将随机字符串映射到两个类吗?
Can I map random strings to two classes faster than a naive hash table?
我有大量固定长度的随机字符串(10m+ 字符串要处理,32 个字符,大约 200k 个唯一字符串(,我想将它们映射到两个类别。我知道哪些随机字符串映射到哪个类别,我希望能够流式传输这些字符串并尽快获得它们的类别。
目前我正在使用从字符串到 0/1 的哈希表 (C++ unordered_map(。我是否可以做任何预处理,或者关于我映射到只有两个类别的事实,可以让我更有效地做到这一点?
有多种方法可以使其(可能(更有效率:
- 对于您的用例,您可以找到更快/更好的哈希算法和/或通常更快的哈希映射实现
- 预先计算每个字符串的哈希并将其存储在包装结构中可能会提高性能,因为每个字符串仅计算一次哈希
- 根据您确定哪个字符串对应于哪个类别的方式,有限状态机可以替换哈希映射(这可以是几个简单的分支到像正则表达式这样复杂的东西(。
- 可能还有更多方法可以提高我现在没有想到的性能
这些优化中的哪一个(如果有的话(实际上提高了性能,需要进行测试。这些只是我会首先尝试的事情。
相关文章:
- 比较两个大小不等的映射c++
- 我可以比朴素哈希表更快地将随机字符串映射到两个类吗?
- 如何通过键和值以及在C 中的结果映射中比较两个地图?我们有任何STL API吗?
- 在两个映射中查找共同值,无需迭代
- 如何使用 std::multimap 将整数键映射到两个用作多维数组坐标的整数值(对于井字)?
- 如何协同映射以下两个对象?
- 两个进程之间的共享映射内存在编辑时未更新
- 使用原子指令确保映射访问安全,是否可以使用两个不同的原子对指令进行重新排序
- 合并两个映射 c++
- 如何合并两个 mpl 映射生成新映射
- 错误:尝试在两个映射中插入时,"__x < __y"中的"运算符<"不匹配
- 指向同一项的两个映射迭代器是否保证相等
- 合并两个映射,对C++中相同键的值求和
- 使用c++减少两个映射的处理时间
- 两个映射之间的分配-移动语义和性能
- 合并两个映射<字符串,整数>
- 两个映射不匹配
- 键上的两个映射相交,保留第一个映射的值
- c++ 11 STL在两个映射之间使用move赋值合并
- 有没有一种优雅的方法来遍历两个映射并比较值(映射具有相同的类型)