【发布时间】:2018-11-08 15:56:19
【问题描述】:
我的高级目标是能够通过值而不是通过引用来比较特定对象(具有相同类型)。对象中的每个值都是布尔值或数字,速度至关重要。
稍微分解一下,我正在寻找一个非常快速的函数,从这个对象到字符串或数字(即哈希),以便我可以在哈希表中查找比较。
我很高兴内联所有提高速度的要求 - 它不需要是自动的,也不需要检查任何typeof
例如:
const foo = {
a: true,
b: {
c: 42
}
d: 3
}
可以减少到[1,42,3],然后可以用作对象的查找键,但是将此数组转换为字符串作为哈希键将不起作用,因为没有办法区别于 [1,4,23]
我已经尝试了 hash algorithm for variable size boolean array 的建议,当我的对象可以放入 32 位 TypedNumberArray 时效果很好 - 但是一旦我需要其中几个数组并在它们上调用 toString(),它就会变慢(仍然然而,比 JSON.stringify 快得多)
目标语言是 javascript,但如果有帮助,我很高兴看到 C 或其他语言的代码示例。
谢谢!
【问题讨论】:
-
如果你想要可逆性,那么你就不需要哈希。
-
散列函数的另一个名称是单向陷门。你只能走一条路。
-
Whups - “以及相反”这行是一个意外......现在删除它,谢谢!
标签: javascript hash hashmap