FSST: Fast Random Access String Compression
很粗略地看了一下这篇论文,我觉得里面两个点很关键:
- 如何组合出来比较好的前缀
- 如何快速地查找前缀是否匹配
第一个问题的解决办法就是,a) 组合两个相邻匹配的code b) 将一次匹配的code和下一个字符进行组合。这种方法的好处是可以从单个字符开始构建,然后不断地筛选出"比较优化"的code.
第二个问题就是使用hastable. hashtable如何想更加高效地映射到SIMD上的话,就必须牺牲准确性(没有chain)并且使用简单的hash function.
论文很长细节也非常多,可以看看作者youtube上的讲座。 (1) FSST: Fast Static Symbol Table compression for strings - Peter Boncz - YouTube
Github: https://github.com/cwida/fsst