TA的每日心情 | 衰 2020-4-2 00:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
发表于 2020-4-1 14:17:41
|
显示全部楼层
本帖最后由 last_idol 于 2020-4-1 14:55 编辑 4 S7 ~+ X" m" \
, t1 }1 V9 F* l# imdx支持lzo和zip这两种压缩算法,常用的是标准的zip压缩,和你平时压缩文件没区别,只是mdx只处理文本,所以压缩率是很高的,这里有对比,相比新出的几个压缩算法也不弱,就是解压速度慢点。https://facebook.github.io/zstd/7 O& A( {' ]+ h6 T/ C: E3 D l
goldendict的预处理,其实就是先读取所有数据的地址,这里面会计算数据在压缩块里的位置和压缩块相对于整个文件的位置,然后建立索引,后面查词的时候就可以直接从这个地址里读取数据了,不需要加载整个文件,goldendict这里用的mmap,可以直接从内存读取文件数据,速度更快,实测goldendict读取一条记录速度在50~300微秒之间,这还是在调试没有优化性能的情况下。在mdx里一个压缩块解压后是64KB,每次只读取这么多就够了。读取100本mdx的数据,总共也就6400KB,所以速度很快的,内存占用也不高。3 Q( U: f S4 P" Y9 {3 B, p7 z
( ]3 g5 @7 t$ L+ o3 V* @/ Y. @1 X% s对于索引每家软件都不一样,
( T4 U! [; r, ~2 xmdict应该是直接读取的mdx本体里的索引,没有自行处理,所以mdx里的词头顺序会影响搜索结果。% Y4 r" O9 p8 n! ?3 J$ c9 @
欧路实测好像也是和mdict一样,用的mdx本体索引,但看别人解包欧路,里面有goldendict的源码痕迹,搞不清用的什么索引。
. J! @: Q3 G2 Ygoldendict用的Btree索引,数据库常用算法,除检索速度优势外,插入数据不需要考虑顺序,而且因为是自建索引,所以也不受mdx本体词头顺序的影响。
/ |4 Q+ R" F" m% f5 u* [6 V$ f% ~# A) x6 }) l
goldendict的数据还是半年前的印象了,论坛里nonwill改版优化过的goldendict性能更好。$ R: p+ {) m, ^! |) c
p: o) ?( z" U1 k; ~8 Q5 T4 b
; n7 H5 x& t" y. [* F$ x' {. l
& ~; @! K6 U9 w" t* t( d- \, t z( X( B$ k
2 [, h$ {7 Y, @/ o0 u# z8 j+ p
|
|