我想要进行32位整数到32位整数的查找映射。
输入键不一定是连续的,也不需要覆盖2^32 -1(我也不希望在内存中消耗这么多空间!)。
这个用例是为了扑克牌评估器,所以查找必须尽可能快。完美哈希会很好,但可能有点超出范围。
我觉得答案是某种Cython解决方案,但我不确定Cython的底层情况,也不确定它是否真的能够改善Python的 dict()
类型。当然,只有一个简单的偏移跳跃的平面数组会非常快,但是我不想为表格分配 2 ^ 32-1
个位置的内存。
有什么提示/策略吗?目标是绝对速度和最小内存占用。
sqlite3
可能是您最好的简单替代方案。 - mswint
→int
映射,那么你应该使用PyPy并使用标准的PyPydict
。对于这种用例,PyPy非常快,甚至不好笑。 - Veedrac