解决痛点问题
- 减少gc, 避免频繁创建销毁
- 弥补常用容器短板问题, 比如Dict的遍历
- 满足业务逻辑中需要的特定功能, 比如四叉树和接受socket数据流的环形缓冲区
自定义容器中的基础数据类型
- 内置类型: array, dict, list
- LinkedNode: 实现了IRecycle的Node节点, 头尾两个指针
- unsafe struct UnsafeStructBuffer: 容器内部储存byte[]的地方
- 基于LinkedNode实现的无gc环形链表, 无gc栈等
常用容器
- LinkedListEx: 无GC环形链表
- FastDictionary: dict记录索引, 两条数组存储数据
- FastHashSet: dict记录索引, 数组存储数据
- FIFOFixedStream: 先进先出的环形固定容量的读写流
- MaxHeap: 大根堆, 堆顶元素最大, 可以用来统计最小的TopN
- DualMap: 双键查找的字典, dict+dict+LinkedNode
- 四叉树, 四叉树节点, 四叉树包围盒
非托管代码块注意事项
- 未指定储存类型的话要注意内存对齐
- in, out, ref 关键字减少结构体传参时候的gc
- 手动Dispose代替GC.SuppressFinalize(this);
- 地址的缓存使用时注意原数据会因gc导致的便宜
- 用完析构