改进的 p-fast Trie:高效前缀匹配算法
本文介绍了一种改进的 p-fast Trie 数据结构,它是一种高效的用于查找字符串集合中与查询字符串最长匹配前缀或最近前驱/后继的算法。与之前的版本相比,该改进版本更简洁,更节省空间。它利用哈希表存储每个唯一前缀,并通过位图表示每个前缀可能的后续字符,从而实现 O(log k) 的时间复杂度(k 为键长)。虽然前驱搜索可能需要更多探测次数,但其性能仍然优于传统的 qp-trie。
阅读更多
本文介绍了一种改进的 p-fast Trie 数据结构,它是一种高效的用于查找字符串集合中与查询字符串最长匹配前缀或最近前驱/后继的算法。与之前的版本相比,该改进版本更简洁,更节省空间。它利用哈希表存储每个唯一前缀,并通过位图表示每个前缀可能的后续字符,从而实现 O(log k) 的时间复杂度(k 为键长)。虽然前驱搜索可能需要更多探测次数,但其性能仍然优于传统的 qp-trie。
阅读更多
作者改进了一种近似无除法的有界随机数生成算法(Lemire算法)。之前的版本通过内联快速路径来减少代码膨胀,但编译器优化受限。作者发现,当限制为常量时,拒绝阈值可在编译时计算,且无需避免除法。新的实现只有一个对随机数生成器的调用,并且当限制为2的幂时,编译器会自动消除循环。这比去年的版本更有效率,并且作者探讨了如何在Rust中使用类似的编译时优化技术。
阅读更多
本文介绍了如何使用AVX-512-BW指令集中的掩码加载和存储指令来加速字符串的小写转换操作,并与其他方法进行了性能比较。结果表明,AVX-512-BW指令集在处理短字符串时性能出色,并且代码实现相对简单。
阅读更多
本文介绍了一种生成真正无偏随机数的算法,不同于Lemire的近似无偏算法,该算法通过构建多分数,并正确处理进位,实现了真正的无偏性。作者通过代码实现并与Lemire算法进行基准测试比较,结果表明,该算法在代码复杂度和性能方面略逊于Lemire算法,但在需要大范围无偏随机数,且使用生成64位随机数的RNG时,该算法具有一定优势。
阅读更多
这篇文章介绍了 Unix 系统中两个鲜为人知的版本控制命令:SCCS what 和 RCS ident。这两个命令可以用来查找二进制文件构建自哪个源代码,这对库文件特别有用。文章以 FreeBSD libc 解析器中的 res_send.c 文件为例,展示了如何使用 SCCS 和 RCS 标记嵌入版本控制信息。作者还分享了如何在自己的项目中使用 git 嵌入版本信息,并表达了对这种传统方法的喜爱。
阅读更多