高性能 java 库 wast - JSONPath 性能测试
关于JSONPath,很早之前本人实现了一个按需解析模型JSONNode,路径规则参考xpath(不支持递归搜索),后来才知道有个JSONPath规范,路径规则懒得改了,几个月前做JSON优化,狠心优化了一个版本,大部分常用的JSONPath功能都已支持包括递归,性能也大幅度提升(主要依赖于JSON优化带来的提升)。
早前和fastjson2对比的测试地址: xiaoch0209/wast-jmh-test
本次测试加入了另一个高性能JSONPath库snack3参与测试
测试环境: window11 + i9 + 32g JDK8 单线程
版本
<dependency> <groupId>io.github.wycst</groupId> <artifactId>wast</artifactId> <version>0.0.21</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.53</version> </dependency> <dependency> <groupId>org.noear</groupId> <artifactId>snack3</artifactId> <version>3.2.122</version> </dependency>
完整测试代码: src/main/java/com/jmh/test/json/path/JSONPath2Test.java · xiaoch0209/wast-jmh-test
测试结果(每毫秒运行次数)
Benchmark Mode Cnt Score Error Units JSONPath2Test.fastjsonReaderAuthors thrpt 5 1051.292 ± 19.083 ops/ms JSONPath2Test.fastjsonReaderPrices thrpt 5 1089.031 ± 21.456 ops/ms JSONPath2Test.fastjsonReaderTop2Author thrpt 5 1287.563 ± 19.824 ops/ms JSONPath2Test.snack3Authors thrpt 5 460.155 ± 4.650 ops/ms JSONPath2Test.snack3Prices thrpt 5 462.212 ± 7.238 ops/ms JSONPath2Test.snack3Top2Authors thrpt 5 445.641 ± 2.799 ops/ms JSONPath2Test.wastAuthors thrpt 5 2744.988 ± 24.966 ops/ms JSONPath2Test.wastPrices thrpt 5 2521.418 ± 16.674 ops/ms JSONPath2Test.wastTop2Authors thrpt 5 5635.949 ± 83.514 ops/ms
wast >> fastjson >> snack3
当前场景下wast性能均远高于其他2个库(不过在毫秒这个级别下运行速度都已经很快了)
另外wast对JSONPath条件查找使用内置的表达式引擎支持,条件使用中括号包起来,语法比JSONPath更简单直观(个人感觉)
JSONPath多条件语法: $..person[?(@.age > 18 && @.name == 'John')]
JSONNode多条件语法: //person[age>18&&name=='John']
以下摘自wiki部分案例代码
// 5.获取作者J. R. R. Tolkien的书 List<JSONNode> filterBooks = JSONNode.collect(source, "/store/book/*[author=='J. R. R. Tolkien']"); System.out.println(JSON.toJsonString(filterBooks)); // 6.获取作者J. R. R. Tolkien的书的价格 double price = JSONNode.first(source, "/store/book/*[author=='J. R. R. Tolkien']/price", double.class); System.out.println(price); // 7.获取作者Herman Melville的同时价格小于10(多条件过滤),过滤表达式参考Expression语法 Book book = JSONNode.first(source, "/store/book/*[author=='Herman Melville'&&price<10]", Book.class); System.out.println(JSON.toJsonString(book)); Book book2 = JSONNode.firstIfEmpty(source, "/store/book/*[author=='Herman Melville'&&price>=10]", Book.class, null); System.out.println(book2); // NULL // 8.获取价格最高的一本书的书名(注意仅限于在某一个集合下),注意引入了parent内置的变量 String bookName = JSONNode.first(source, "/store/book/*[price==parent.max('price')]/title", String.class); System.out.println(bookName); // 9.获取存在isbn属性的书名 System.out.println(JSONNode.collect(source, "/store/book/*[isbn]/title")); // 10.获取所有的book节点 System.out.println(JSONNode.collect(source, "//book/*"));
更多使用案例: wiki JSONNode
wast源码地址
- gitee: https://gitee.com/xiaoch0209/wast
- github: https://github.com/wycst/wast

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
龙芯处理器成功运行 DeepSeek 大模型
龙芯中科官方宣布,搭载龙芯 3 号 CPU 的设备成功启动运行 DeepSeek R1-7B 模型,实现本地化部署,性能卓越,成本优异。 据介绍,龙芯日前联合太初元碁等产业伙伴,仅用 2 小时即在太初 T100 加速卡上完成 DeepSeek-R1 系列模型的适配工作,快速上线包含 DeepSeek-R1-Distill-Qwen-7B 在内的多款大模型服务。 目前,龙芯正积极携手太初元碁、寒武纪、天数智芯、算能科技、openEuler 等合作伙伴,全力打造 DeepSeek 系列模型的多形态推理平台 龙芯表示,采用龙芯 3A6000 处理器的诚迈信创电脑和望龙电脑已实现本地部署 DeepSeek,部署后无需依赖云端服务器,避免了因网络波动或服务器过载导致的服务中断。 DeepSeek成功部署于诚迈信创电脑 龙芯 3C6000 / D 双路服务器成功启动 DeepSeek 龙芯 3C5000 服务器 + OpenCloudOS Stream23 成功启动 DeepSeek 详情:https://mp.weixin.qq.com/s/RvTu9R9jGeuWh...
- 下一篇
Ollama 介绍,搭建本地 AI 大模型 deepseek,并使用 Web 界面调用
Ollama 是一个基于 Go 语言的本地大语言模型运行框架,类 Docker 产品(支持 list,pull,push,run 等命令),事实上它保留了 Docker 的操作习惯,支持上传大语言模型仓库 (有 deepseek、llama 2,mistral,qwen 等模型,你也可以自定义模型上传)。 在管理模型的同时,它还提供了一些 Api 接口,让你能够像调用 OpenAI 提供的接口那样进行交互。 一、下载安装 Ollama Ollama 支持多平台部署,你可以在官网,选择适合的安装包。 下载地址:https://ollama.com 运行之后,访问 localhost:11434,查看是否正常运行: 二、AI 模型管理 ollama 安装之后,其同时还是一个命令,与模型交互就是通过命令来进行的。 ollama list:显示模型列表。 ollama show:显示模型的信息 ollama pull:拉取模型 ollama push:推送模型 ollama cp:拷贝一个模型 ollama rm:删除一个模型 ollama run:运行一个模型 官方提供了一个模型仓库,htt...
相关文章
文章评论
共有0条评论来说两句吧...