开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5012|回复: 373
收起左侧

[易语言纯源码] 【开源】ZJSON v1.1 易语言 JSON 性能天花板

  [复制链接]
结帖率:100% (3/3)
发表于 2026-4-9 23:58:22 | 显示全部楼层 |阅读模式   重庆市重庆市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 z573277679 于 2026-4-10 00:01 编辑

ZJSON 在首发前已历经严苛的性能压测与多轮逻辑迭代,底层引擎架构已趋于稳定与闭环。本次更新在保持代码洁癖的同时,利用 API 跳板技术重构了底层寻址,并补全了全汇编编码工具链。

关于兼容性的特别说明:
针对部分用户反馈“不兼容单引号或无引号键名”的问题,这并非设计遗漏,而是 SIMD(硬件加速) 的必然要求。ZJSON 严格遵循 RFC 8259 工业标准,因为只有高度标准化的数据,才能让汇编引擎实现预测寻址与零分支预判。

如果你追求开发的随性,市面上有很多优秀的兼容型模块;但如果你追求物理极限的吞吐性能,请拥抱标准。 这种“不妥协”的设计,不仅是为了性能,更是为了在易语言生态中倡导更严谨、更具健壮性的编码规范。因此,ZJSON暂不考虑适配任何非标准格式。

【更新日志 2026-3-14】
1. 新增 汇编级可重入自旋锁:
  • 引入 ThreadID 绑定机制,完美解决同一线程内嵌套调用 JSON 读写方法导致的死锁问题。
  • 加入指数退避算法(Exponential Backoff),大幅降低多线程激烈竞争下的总线锁定开销,高并发性能更稳健。

2. 优化 哈希寻址引擎(Salted Hash):
  • 引入 ASLR 动态地址盐化技术,哈希种子随模块加载地址动态变化,从底层杜绝哈希碰撞 DoS 攻击。
  • 结合硬件级指令进行全字符匹配,万级 Key 检索耗时降至纳秒级。

3. 新增 数组操作高速缓存(Array Context Cache):
  • 连续对同一数组路径进行 加入成员 操作时,自动跳过路径编译,直接定位缓冲区尾部,数组成员追加速度提升。

4. 优化 内存扩容与对齐策略:
  • 采用更激进的 2.0x 扩容系数,并强制执行 4KB 内存页对齐,极大地减少了系统分配内存(ntdll)的次数,解决了大数据量下的内存抖动问题。

5. 修复 浮点数转换精度问题:
  • 重构汇编函数,引入 Epsilon 精度补偿机制,彻底解决了部分小数序列化后出现噪音尾数的问题。

6. 修复 路径编译器越界隐患:
  • 修复了在处理单层非嵌套路径时,由于索引初始值定义错误可能导致的极小概率内存越界崩溃。

7. 增强 RFC 8259 规范校验:
  • 汇编校验器(Validate)新增对数字“前导零”和非法控制字符的拦截逻辑,支持 \uXXXX\uXXXX Unicode 代理对解析,完美还原 Emoji。

8. 新增 纯汇编编码工具链:
  • 新增 ANSI / UTF-8 / Unicode 极速互转、Base64 编解码、HEX 编解码,所有转换均在汇编层实现,彻底脱离外部模块依赖。




【模块简介】
ZJSON 是一款专为高并发与海量数据场景打造的工业级 JSON 解析与构建引擎。通过对 x86 汇编的深度重构与底层内存架构的颠覆性创新,它成功打破了 32 位环境的物理桎梏。以常态稳定 600~720MB/s 的解析吞吐量和破 千万次 Ops/s 的读写极速,正式将易语言的 JSON 处理能力推入全球顶尖梯队(跻身 T1 级别,性能直接比肩 C++ 工业标杆 RapidJSON,远超 V8 引擎与 Go 原生库,更是对易语言常规第三方模块形成了几十倍的降维打击)。它不仅是一台跑分无敌的“性能怪兽”,更在极客级别的底层中,融入了如同 JavaScript 般丝滑的现代化开发体验。

【核心技术特性】
  • 汇编级降维打击与惰性扁平流 (Lazy Flat-Buffer)
    全面抛弃传统臃肿的 DOM 多叉树结构!数据在内存中保持连续字节流,依靠纯 FASM 汇编指令、SSE2 向量化以及硬件级 CRC32 哈希进行 O(1) 极速寻址。对于大型数组甚至支持纯惰性加载 (Zero-Copy 级带宽),深层数据提取仅需纳秒级(~1100ns)。


  • 突破性的 O(1) 内存复用 (Space Filling & Minify)
    告别引起卡顿的频繁堆内存申请。创新引入“预留空洞”与“Ghost Node (软删除)”机制,95% 的节点更新直接在物理内存中原地覆盖。配合极速紧缩机制,实现真正的零内存碎片、零泄漏,在万次级别的大规模修改中稳如泰山。


  • JS 级智能结构补全 (Auto-vivification)
    写 JSON 从未如此优雅!自带智能路径编译器,只需简单一句 KV.置文本 ("data.users[0].profile.age", "18"),引擎即可无视数组越界与节点缺失,安全、自动、一次性补全所有前置父节点。告别繁琐的判断代码,实现“点哪创哪”。


  • 防弹级高并发护航 (Thread-Safe)
    全量 API 标配 TTAS (Test-and-Test-and-Set) 汇编级自旋锁。即使在多线程高频交叉读写、底层数组元素疯狂增删导致内存大平移的极端恶劣场景下,依然能保证哈希索引的绝对精准,死锁与指针错位几率为 0。



游客,如果您要查看本帖隐藏内容请回复


点评

感谢分享,很给力!~   福建省宁德市  发表于 4 天前

评分

参与人数 11好评 +3 精币 +13 收起 理由
天雷 + 1 + 3 YYDS~!
zjbin1989 + 1 感谢分享,很给力!~
恒大大 + 1 感谢分享,很给力!~
文西哥 + 1 感谢分享,很给力!~
xhping + 1 感谢分享,很给力!~
风雨3137 + 1 感谢分享,很给力!~
cunanhai + 1 + 2 开源精神必须支持~
cui870222829 + 1 感谢分享,很给力!~
cbl521ysys + 1 感谢分享,很给力!~
kyo9766 + 1 感谢分享,很给力!~
361322548 + 1 还可以更极限吗,写json往往是连贯的动作,是否可以只申请一次内存.

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (3/3)

签到天数: 1 天

 楼主| 发表于 2026-4-10 10:22:13 | 显示全部楼层   重庆市重庆市
本帖最后由 z573277679 于 2026-4-10 10:24 编辑
zzh233 发表于 2026-4-10 08:26
所有json支持库模块啥的 最好都兼容精易的json格式 否则就要加上配套的工具 解析 组包 一键生成 这样才方便 ...

前不久开源的精易网页助手做了适配精易网页助手 v2.7 性能重构版
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14873686
(出处: 精易论坛)

点评

新版本在评论区下载   重庆市重庆市  发表于 2026-4-10 10:23
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 1 天

 楼主| 发表于 2026-4-11 03:04:07 | 显示全部楼层   重庆市重庆市
本帖最后由 z573277679 于 2026-4-11 03:06 编辑
1720138548 发表于 2026-4-10 17:02
有个Bug,json内容为:    模块版本为:版本:1.1  两个取到的值都是 5      
  
[/quote]感谢反馈,替换该子程序即可修复此问题。
[e=4].版本 2
子程序名返回值类型公开备 注
Asm_JSON_Path_Query整数型 
参数名类 型参考可空数组备 注
缓冲区指针整数型
缓冲区长度整数型
路径文本型
传回净长度整数型
传回是否字符串逻辑型
置入代码 ({ 83, 86, 87, 131, 236, 20, 139, 117, 8, 139, 77, 12, 141, 12, 14, 137, 77, 240, 139, 69, 16, 139, 0, 137, 69, 252, 133, 192, 15, 132, 88, 1, 0, 0, 139, 125, 252, 138, 7, 132, 192, 15, 132, 38, 1, 0, 0, 60, 46, 117, 5, 255, 69, 252, 235, 234, 60, 91, 15, 132, 192, 0, 0, 0, 137, 250, 138, 7, 132, 192, 116, 11, 60, 46, 116, 7, 60, 91, 116, 3, 71, 235, 239, 137, 248, 41, 208, 137, 69, 248, 137, 125, 252, 232, 36, 1, 0, 0, 128, 62, 123, 15, 133, 15, 1, 0, 0, 70, 232, 21, 1, 0, 0, 128, 62, 125, 15, 132, 0, 1, 0, 0, 128, 62, 34, 15, 133, 247, 0, 0, 0, 70, 86, 87, 137, 215, 139, 77, 248, 243, 166, 95, 94, 117, 38, 139, 77, 248, 128, 60, 14, 34, 117, 29, 141, 116, 14, 1, 232, 227, 0, 0, 0, 128, 62, 58, 15, 133, 206, 0, 0, 0, 70, 232, 212, 0, 0, 0, 233, 107, 255, 255, 255, 59, 117, 240, 15, 131, 186, 0, 0, 0, 138, 6, 70, 60, 34, 116, 7, 60, 92, 117, 236, 70, 235, 233, 232, 179, 0, 0, 0, 128, 62, 58, 15, 133, 158, 0, 0, 0, 70, 232, 164, 0, 0, 0, 82, 232, 189, 0, 0, 0, 90, 232, 152, 0, 0, 0, 128, 62, 44, 117, 6, 70, 233, 115, 255, 255, 255, 128, 62, 125, 116, 124, 235, 122, 255, 69, 252, 139, 125, 252, 49, 192, 15, 182, 31, 128, 251, 93, 116, 16, 131, 235, 48, 131, 251, 9, 119, 98, 107, 192, 10, 1, 216, 71, 235, 232, 71, 137, 125, 252, 137, 69, 244, 232, 90, 0, 0, 0, 128, 62, 91, 117, 73, 70, 139, 93, 244, 232, 76, 0, 0, 0, 133, 219, 15, 132, 224, 254, 255, 255, 232, 94, 0, 0, 0, 232, 58, 0, 0, 0, 128, 62, 44, 117, 41, 70, 75, 235, 224, 137, 117, 236, 86, 232, 71, 0, 0, 0, 137, 241, 94, 41, 241, 139, 85, 20, 137, 10, 139, 85, 24, 128, 62, 34, 15, 148, 192, 15, 182, 192, 137, 2, 137, 240, 235, 2, 49, 192, 131, 196, 20, 95, 94, 91, 201, 194, 20, 0, 59, 117, 240, 15, 131, 165, 0, 0, 0, 138, 6, 60, 32, 116, 13, 60, 9, 116, 9, 60, 10, 116, 5, 60, 13, 116, 1, 195, 70, 235, 225, 59, 117, 240, 15, 131, 134, 0, 0, 0, 138, 6, 60, 34, 116, 46, 60, 123, 116, 62, 60, 91, 116, 64, 59, 117, 240, 115, 115, 138, 6, 60, 44, 116, 109, 60, 125, 116, 105, 60, 93, 116, 101, 60, 32, 116, 97, 60, 9, 116, 93, 60, 13, 116, 89, 60, 10, 116, 85, 70, 235, 218, 70, 59, 117, 240, 115, 76, 138, 6, 70, 60, 34, 116, 69, 60, 92, 117, 240, 70, 235, 237, 178, 125, 182, 123, 235, 4, 178, 93, 182, 91, 49, 201, 65, 70, 59, 117, 240, 115, 43, 138, 6, 70, 60, 34, 116, 17, 56, 240, 116, 6, 56, 208, 116, 5, 235, 234, 65, 235, 231, 73, 117, 228, 195, 59, 117, 240, 115, 14, 138, 6, 70, 60, 34, 116, 215, 60, 92, 117, 240, 70, 235, 237, 195 })
返回 (0)


i支持库列表   支持库注释   
spec特殊功能支持库
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 1 天

 楼主| 发表于 2026-4-13 13:25:32 | 显示全部楼层   重庆市重庆市
2269248626 发表于 2026-4-13 02:35
https://c.wss.ink/f/jnaqllb2n4j 复制链接到浏览器打开

感谢提供的示例。ZJSON使用的无树化引擎,因此写法上需要稍微调整。为了确保测试公平性,我这里屏蔽了你代码中的 内存分配加速优化。
最终测试结果如下:

开始运行被调试程序
* “==============================
欢迎使用 NxJson Rust 库,配合 Nxjson 助手 使用更爽哦!
NxJson 官方技术Q群:1071098978 @JCOS-易
=======================================”
* “大师0分-大师300”
* “yyjson 耗时ms:” | 8.485269
* “zyjson 耗时ms:” | 137.654414
* “e2ee 耗时ms:” | 121.467791
* “nxjson 耗时ms:” | 45.371320
* “Zjson 优化后耗时ms:” | 12.027203
被调试易程序运行完毕





  
子程序名返回值类型公开备 注
Zjson  
变量名类 型静态数组备 注
jsonZJSON 
临时子对象ZJSON 
数组文本文本型0
数量整数型 
索引整数型 
SerialNo文本型 
timeEnd双精度小数型 
time双精度小数型 
time = 取启动时间Ex ()
如果真 (json.载入JSON (当前json))
数量 = json.取所有值_原始 (数组文本, “LevelOrderList”)
计次循环首 (数量, 索引)
临时子对象.载入JSON (数组文本 [索引])
SerialNo = 临时子对象.取文本 (“SerialNo”)
计次循环尾 ()

timeEnd = 取启动时间Ex ()
调试输出 (“Zjson 优化后耗时ms:”, timeEnd - time)


i支持库列表   支持库注释   
spec特殊功能支持库


回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 7 分钟前 | 显示全部楼层   山东省*
6666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 13 分钟前 | 显示全部楼层   福建省福州市
大佬。感谢分享,很给力!~  
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 1 天

发表于 5 小时前 | 显示全部楼层   海南省海口市
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 5 小时前 | 显示全部楼层   云南省昭通市
666666必须顶啊
回复 支持 反对

使用道具 举报

发表于 22 小时前 | 显示全部楼层   湖南省湘西土家族苗族自治州
感谢大佬分享
回复 支持 反对

使用道具 举报

结帖率:79% (33/42)
发表于 前天 23:26 | 显示全部楼层   河南省商丘市
可以看看
回复 支持 反对

使用道具 举报

结帖率:35% (7/20)

签到天数: 1 天

发表于 前天 22:31 | 显示全部楼层   广东省佛山市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:89% (49/55)
发表于 前天 22:11 | 显示全部楼层   湖北省荆州市
        感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:85% (29/34)

签到天数: 1 天

发表于 前天 21:15 | 显示全部楼层   福建省龙岩市
学习看看
回复 支持 反对

使用道具 举报

发表于 前天 16:57 | 显示全部楼层   浙江省杭州市
感谢分享,很给力!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表