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。