2007年2月9日

前缀压缩词典

摘要: 包含多个固定索引,一个可变索引,固定索引使用一个内存池和一个数组保存项目在内存中的偏移,并且使用前缀压缩,使用空间最小(每个词条4个字节的索引空间) 可变索引不压缩,并且可以动态插入词条,占用空间较大(每个词条20个字节的索引空间)存储 1000 万个词,占用内存 100M 左右,平均每个词10个字节(包括了字符串空间和索引空间)。接口采用 stl 容器的风格 阅读全文

posted @ 2007-02-09 22:34 能发波 阅读(167) 评论(0) 推荐(0)

cpu 的 cache 是很宝贵的——从互相平行的数组看

摘要: 以前一直想不通,为什么在有些系统中,要把同一个数据结构的不同字段放入多个互相平行的数组中,而不是放入一个结构中。典型的如Windows PE 可执行文件的导入表,有 IAT (导入地址表)和 INT(导入名字表),这两个表就放在两个互相平行的数组中,而按照我们的第一感觉,好像这样的设计纯粹是玩弄我们的大脑,没有任何别的益处。其实仔细想想,这样的益处是很大的,在Windows 从 INT 载入 IAT 以后,INT 就几乎永远用不着了,而 IAT 使用得非常频繁,这样,CPU 就会把 IAT 载入 cache,如果把 INT 和 IAT 分离(两个平行的数组),CPU 载入 IAT 时就不会连 阅读全文

posted @ 2007-02-09 22:25 能发波 阅读(151) 评论(0) 推荐(0)

导航