c++ - 在散列容器中存储持久性 v8 对象句柄

标签 c++ v8

我想存储一个 v8::Persistent<v8::Object>在哈希类型容器中处理(更准确地说是 Google dense_hash_set )。我需要为此实现自己的哈希函数吗?我可以依靠v8::Object::GetIdentityHash吗?哈希值的方法?查看代码,我可以看到它们基本上只是为对象生成一个随机的 32 位数字并将其缓存。这足以避免哈希冲突吗?

最佳答案

我的回答是,是的,它可以用作哈希键,但是......

根据 this , int v8::Object::GetIdentityHash():

Returns the identity hash for this object.

The current implementation uses a hidden property on the object to store the identity hash.

The return value will never be 0. Also, it is not guaranteed to be unique.

它可能会为不同的对象生成相同的键,并且您可能会发生冲突。但是,这还不足以成为放弃此功能的理由。

问题在于保持低碰撞率。这取决于 GetIdentityHash 的分布和哈希表的大小。

您可以测试它并计算碰撞次数并检查它是否会损害您的性能?!

关于c++ - 在散列容器中存储持久性 v8 对象句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15308085/

相关文章:

c++ - CUDA蛮力乐趣

c++ - 创建指向抽象对象的指针 vector

c++ - 如何在 Rust 中优雅地 #include "gtk-layer-shell.h"

c++ - node.js 插件如何检查参数类型

javascript - 奇怪的 Date() 使用包含 NULL 字节的字符串创建

C++ 请有人可以解释这行代码吗?

c++ - 多态和重载有什么区别?

c++ - 调用处理程序数据的垃圾收集

c++ - 将数字元素传递给对象

V8 中的 JavaScript 编译