Releases: hl845740757/Dson
2.1.0-rc1
- C# DsonCodec支持。
- 删除Java端 DsonLiteCodec 支持 —— 维护工作量太大。
- 增加Timestamp类型
- 优化Java端apt代码,CodecLinkerBean完整钩子支持
2.0.2
2.0.0
Dson2版本正式发布。
在较多使用Dson1之后,发现Dson1的行首设计大多数时候增加了输入负担,Dson2修改了行首设计,只在Dson文本块@"""
下使用行首。
PS:这不仅降低了用户书写Dson文本的难度,也降低了代码复杂度。
1.4.0
V1.4 包含三个方面:性能优化,Dson投影,Java DsonCodec组件命名。
性能优化
前几日在C#端做了 Dson 和 System.Json,MongoDB.Bson,Newtonsoft.Json 之间的读写性能测试。
发现Dson在写文件的时候性能较差,最终定位到是由于每次换行都Flush的缘故 => 变更为达到4K再Flush。
在更改完Flush的问题后,Dson和Bson的读写性能相近(毕竟算法相似),但和系统库的Json还是有明显的差距;
由于没有其它高频IO操作,因此我猜测的字节数组拷贝(扩容)或字符串拼接的问题,于是制作了StringBuilderPool替换
Reader和Writer中的Builder,在完成此次优化后,Dson和System.Json的差距只有几毫秒,已经和Bson拉开距离。
最后我又做了数组缓存池,虽然减少了内存分配和GC,但速度上变化已不明显,和系统库的差距保持在几毫秒(520KB的Json文件,read差距5-6ms)。
投影
在最初,我仅仅是想支持GetSection这样的功能,但一想如果需要获取一个Object的多个Key呢?
最后决定实现我在MongoDB中使用的投影功能。
V1.4版本的投影功能还比较简单,目前可以实现正确的投影,但语法不够简单 -- 没有实现MongoDB的连续.
指定key。
(我不想让.
成功关键字)
DsonCodec重命名
DsonCodec是从Commons包中迁移回来的,命名上存在一些问题,在V1.4版本中进行了修正。
Bug修复
- C# 读到文件尾部的时候,继续读会返回0,而Java返回-1 -- C#条件判断错误导致死循环。
- V1.4版本之前,DsonTextWriter的列(column)统计,不是按照字符统计的,现变更为按照字符数统计。
1.2.0
- 1.2 版本的最大变化就是变更了对象 Header 的语法,对象头必须使用
@{}
样式!这可以提高清晰度,也可以避免错误。 - 版本重命名了部分类,主要为与C#的实现保持一致;
- 版本新增的特性为:TextWriter支持行首前额外缩进,可使得长文本更易阅读和编写。