高性能 Java 工具库 wast v0.0.21 发布
01-03 08:55 来源:oschina 阅读(142)

WAST 是一个高性能 Java 工具集库包,包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎.


源码地址


gitee: https://gitee.com/xiaoch0209/wast    

github: https://github.com/wycst/wast

性能测试:


gitee: https://gitee.com/xiaoch0209/wast-jmh-test

github: https://github.com/wycst/wast-jmh-test

JSON 与 simdjson-java 对比: JSON 性能测试之二 - wastjson 每秒 6GB 解析速度完胜 simdjson-java

表达式性能测试:  WastEl 表达式引擎性能测试 - 每秒千万次运算超强性能 - OSCHINA - 中文开源技术交流社区

v0.0.21 更新内容:


JSON 调整序列化设置最大支持缓冲 buf 长度为 1.5G (v0.0.20);

JSON 校验重构支持输入 byte 数组 (v0.0.20);

double 解析精度 bug 修复 Issue #2 (v0.0.20);

JSON 支持解析简单类型(number/boolean/null)(v0.0.20);

jdbc 控制某一个实体类不打印 sql;

优化 EL 表达式解析模式下的运行性能(pojo 作为变量上下文时性能大幅度提升);

提升个别场景下 double 解析性能;

JSONReader 支持 Pojo 类型的短路读取解析;

修复 JSON 序列化在启用 JIT 模式下写入字段 key 错误问题  

实用功能: JSON 流式读取直接提取路径片段转化为 Pojo 类(短路模式)

public static void main(String[] args) {
        Book book = JSONReader.exactPathAs(JSONReaderPojoTest.class.getResourceAsStream("/json/path.json"), "/store/book/0", Book.class);
        System.out.println(book);
        System.out.println(JSON.toJsonString(book));
    }

路径 /store/book/0 代表读取到第一个 book 后短路退出,并把命中的路径片段转化为 Book 对象,当读取的流数据特别大比如几百 MB 甚至几个 GB 大小时将非常有用,和常规的解析相比内存占用小 (取决于 buffsize 可设置,默认 8192 字节),而且效率更高。注意,当流数据不大时就没必要使用流式读取了,经过测试 JSONReader 完整读取模式通常没有 JSON 的 API 直接反序列化快,当解析读取大数据流而且需要控制内存占用则推荐使用 JSONReader。