beluo

Results 2 issues of beluo

会持续更新 ![image](https://github.com/liu-cn/json-filter/assets/56096275/99a96e71-e15e-4834-8cd8-1442ad0ce202)

该issue主要讨论如何对过滤性能进行进一步提升,目前此项目是利用反射获取结构体的字段信息,把打标记的字段提取出来,挂载在一个n叉树的结构体上,在过滤时为了提高性能,利用了缓存,进行了3个版本的优化策略 最早版本 : 遍历整个结构体的所有字段,遍历到最深层,然后每遍历一个字段就获取一下字段的json tag 然后判断是否被选中,提取出需要用的 目前版本:缓存了所有结构体字段的tag信息,遍历每一个字段时即可知道该字段是否选中,不需要获取tag信息,不需要字符串处理,有了很大的性能提升, 目前优化的新版本:在调用过滤方法时,根据结构体的pkg path生成一个新的缓存n叉树,该数据结构仅仅存储该结构体在该缓存场景下的所有字段的index下标信息,在遍历结构体时根据下标跳过那些被过滤掉的字段,此时避免了大部分无用的反射,而且不需要进行字符串处理,性能又进行了很大幅度的提升(特别是在,select模式下一个10个字段的结构体,选择了2-3个等类似操作,也就是字段很多却选中很少的情况下此时性能会暴击提升,因为其余的7-8个字段根本不会被反射) 接下来的优化方向:内置json编码功能,提升反射性能

enhancement