之前在9月的时候开发完成了一个自实现的json解析库,不过性能十分的糟糕,甚至比jsonlib还要差。故而抛弃原有的算法重新设计。于是有了全新的lbjson。
lbjson具备传统json解析库的所有功能,包括java对象转换成json对象,java对象转换成json字符串,字符串逆向转换为json对象,json对象转换为java对象
在性能测试中,所有的常用场景(lbjson提供的api包含了常用的场景,比较精炼)与号称业内速度最快的fastjson(阿里巴巴出品)进行对比,均有不小的胜出。部分场景下性能可以达到数倍之多。
lbjson为什么会这么快?
(1)对需要序列化的对象进行预分析,缓存对象结构。后续相同对象进行序列化或者任意操作时这些结构信息可以直接使用,加快速度
(2)对于字符串逆向会json对象,自行设计的无回退一遍扫描解析算法,无嵌套,无回退,一次完成json对象的生成
(3)对象序列化成json对象或者json字符串,由于有了对象的结构信息,所以在序列化的过程中无需判断属性的类型故而节省非常多的时间
(4)通过unsafe类来进行反射操作,进一步缩短操作时间(该类为jdk的内置类,一般情况下无法调用到,但是性能极高)。
该项目目前已经开源,地址在svn://www.svn999.com/fengyetianshi.lbjon。
欢迎大家留言和我一起讨论。