Judy array是一种快速数据结构,可以表示一个稀疏数组或一组值。是否有针对 C# 等托管语言的实现?谢谢
最佳答案
值得注意的是,如果您在谷歌上搜索它们,它们通常被称为 Judy Trees 或 Judy Tries。
我还寻找了 .Net 实现,但一无所获。 还值得注意的是:
该实现主要围绕高效缓存使用而设计,因为此类实现细节可能高度依赖于子结构中使用的某些构造的大小。 .Net 托管实现在这方面可能有些不同。
我可以看到一些重大障碍(我的简短扫描可能遗漏了更多障碍)
- API 有一些相当反 OO 的方面(例如,空指针被视为一棵空树)如此简单,将状态指针移动到 LHS 并将函数实例方法转换为 C++ 是行不通的。
- 我看到的子结构的实现大量使用了指针。我看不到这些被有效地翻译成托管语言的引用。
- 实现是许多非常复杂的想法的提炼,掩盖了公共(public) api 的简单性。
- 代码库大约有 20K 行(大部分都很复杂),我觉得这不是一个简单的移植。
您可以使用该库并将 C 代码包装在 C++/CLI 中(可能只是在内部保存一个指针,即 c api trie,并让所有 c 调用都指向这个)。这将提供一个简单的实现,但 native 实现的链接库可能有问题(内存分配也可能有问题)。 您可能还需要在转换时将 .Net 字符串转换为普通的旧字节*(或者直接使用字节)
关于c# - 用于托管语言的 Judy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/550204/