Skip to content

数据结构

hankcs edited this page Mar 16, 2018 · 3 revisions

数据结构

数据结构,特别是字符串上的结构,是影响一个NLP系统效率的瓶颈。目前HanLP中常用的有3种字符串容器,可以替代Map<String, V>

内存与效率

将感知机分词器的113万特征作为键,随机shuffle键作为值,构造数据结构。然后分别查询每个键和值各一次(以此模拟真实环境下查询容器内外的元素),benchmark结果如下:

插入耗时(ms) 查询耗时(ms) 内存占用(MB)
HashMap 2533 87 88.65
TreeMap 2428 203 89.94
DoubleArrayTrie 3883 55 50.39
MutableDoubleArrayTrie 2193 167 48.42
BinTrie 1727 105 67.96
  • 此处DoubleArrayTrie的插入指的是构造。
  • 在值为int的场景下,MutableDoubleArrayTrieInteger预计内存占用还会更少。