我很好奇其他人是如何解决这个问题的,以及天真的解决方案背后可能潜藏着什么问题:
我有一个处理股票市场数据的系统。有数以万计的符号,以及相关的价格/大小,以每毫秒几千的速度流入系统。
在每个节拍上需要进行的基本操作之一是字符串比较,以查看传入的符号是否与我们感兴趣的符号匹配。在如此高的频率下,这些字符串比较的优化可以在整个系统的性能中产生可测量的差异。
我正在考虑生成符号字符串的散列,并将其与记录一起存储。对于随后的比较,系统应该使用这个散列(如果是int或long,比较应该是单个操作,而不是遍历字符串的每个字符,直到发现不匹配)。
让我们忽略生成散列本身的成本(实际上,这可能是令人望而却步的)。我能看到的唯一问题是,对于大量的唯一符号,散列冲突(两个单独的符号生成相同的散列)将是灾难性的。有没有一种散列算法可以保证匹配特定约束(比如字符数限制)的字符串是唯一的?
编辑:我将用Java编写这段代码。不确定hashCode的(碰撞)质量或计算速度。
发布于 2009-07-02 16:12:24
你应该考虑使用Perfect hash function,我认为它符合你的要求
https://stackoverflow.com/questions/1075250
复制相似问题