背景介绍
在CAD系统中,需要根据对象的ID,快速获取在内存中的对象指针。采用传统的id-element的map数据结构能够检索到对象的指针,但是当模型数量很大到10万级别时,会存在性能问题。我们需要设计一种新的方案来提升检索性能。
1.IElementManager功能设计
- 按照elementId获取Element对象
- 按照elementId获取DbElement
- 获取所有对象elementId列表
- 获取指定Categogry的对象elementId列表
- 增加Element
- 删除Element对象
2.ElementId的格式定义
其中:
i/v : invalid/valid,0表示element id有效,1表示无效
t/p : transient or permanent,0表示非临时对象,1表示临时对象
reserve : 未使用的保留位
bucket idx : 内部数据
element node idx : 内部数据
三种种element id 具体分类方式:
第一类数据:element id 有效且无dataset id 的非临时对象
第二类数据:element id 有效且无dataset id 的临时对象,其按位划分方式与第一类