Judy array是快速数据结构,可以表示稀疏数组或一组值。是否有针对C#等托管语言的实现?感谢
答案 0 :(得分:16)
值得注意的是,如果您正在使用Google搜索,这些通常被称为Judy Trees或Judy Tries。
我也寻找.Net实现,但一无所获。 另外值得注意的是:
实现是围绕有效的高速缓存使用而设计的,因为这样的实现细节可能高度依赖于子结构内使用的某些构造的大小。在这方面,.Net管理实施可能会有所不同。
我可以看到一些重大的障碍(可能还有更多我的短暂扫描错过了)
您可以使用库并将C代码包装在C ++ / CLI中(可能只是在内部保存一个指针,该指针是c api trie并且所有c调用都指向此代码)。这将提供简单的实现,但本机实现的链接库可能存在问题(可能是内存分配)。 你也可能需要处理在转换时将.Net字符串转换为普通的旧字节*(或者直接使用字节)
答案 1 :(得分:12)
Judy真的不适合托管语言。我不认为你能够使用类似SWIG的东西并自动完成第一层。
我写了PyJudy,最后我不得不做一些非平凡的API更改以适应Python。例如,我在文档中写道:
JudyL数组将机器字映射到 机器字。在实践中的话 存储无符号整数或指针。 PyJudy支持所有四个映射 不同的类。
我几年没看过这段代码所以我对它的回忆非常朦胧。这是我的第一个Python扩展库,我记得我将一种用于代码生成的模板系统整合在一起。现在我会用像genshi这样的东西。
我不能指出Judy的替代品 - 这就是我搜索Stackoverflow的原因之一。
编辑:我被告知我的文档中的时间数字与Judy的文档建议不同,因为Judy是为64位缓存行开发的,而我的PowerBook只有32位。
其他一些链接:
最后一个具有不同高性能trie实现的比较数字。
答案 2 :(得分:2)