开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 163|回复: 16
收起左侧

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

[复制链接]
回帖奖励 189 枚 精币 回复本帖可获得 1 枚 精币奖励! 每人限 1 次(中奖概率 80 %)
结帖率:100% (3/3)
发表于 昨天 18:39 | 显示全部楼层 |阅读模式   重庆市重庆市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本次 1.5 版本重点强化了多线程并发查询的 TLS 隔离机制,并深度补齐了底层汇编在内存边界上的安全防护,让高负载业务运行更加稳定。
从首次发布至今,ZJSON 已历经6个版本的迭代打磨。为了让它在易用性、极限性能和底层稳定性上达到平衡,我在汇编指令与内存架构上倾注了大量心血并进行了长期压测。当然,一个真正优秀的底层库更离不开精易论坛各位易友的深度实测与边界Bug反馈。正是大家的共同参与,才让ZJSON成长为易语言生态中兼顾性能与稳定的 JSON 引擎,感谢大家一路以来的信任与支持!


【ZJSON V1.5 更新日志】

1. 优化 256槽 TLS 线程级数组查询游标缓存:
  • 废弃原单实例全局游标设计,改用16KB独立槽区 m_QC_Slots。纯汇编提取当前线程 TEB 中的 Thread ID 并映射独立缓存槽(Asm_QC_Get / Asm_QC_Set),解决多线程高并发遍历数组时的游标竞争与脏读问题。

2. 优化 SIMD 跨页内存边界安全探测:
  • 针对 Asm_JSON_Skip_Node 与 Asm_Skip_Whitespace 矢量扫描逻辑,新增4KB内存页末尾探测。当扫描游标逼近页尾不足16字节时,自动平滑降级为单字节安全扫描,杜绝SSE指令跨页读取引发的访问违规异常。

3. 优化 纯汇编双字符查表整数序列化:
  • 重构 Asm_Itoa_ToBuf 数值转换引擎,引入 200 字节 "00"–"99" 预计算常量表结合乘法逆元算法,单次循环直接处理 2 位十进制字符,提升海量整数节点连续写出与序列化的吞吐性能。

4. 修复 哈希内存池边界越界熔断与状态回滚:
  • 在 哈希表_添加_按指针 及 哈希表_添加_转义键 中加入物理内存池边界拦截。当写入尺寸超出预分配池上限时,主动阻断写入并标记脏索引,交由后续读写流程自动触发全量重建,防止物理内存越界覆写。

5. 优化 功能扩展:
  • 保存到文件 新增 格式化输出 逻辑型可空参数,支持在持久化到磁盘时直接输出缩进美化后的文本数据。


6. 修复 路径查询与数组自动初始化的容错机制:
  • 修复 _内部_路径查询 中首层直接以数组下标 [0] 起始时的寻址异常。
  • 强化 数组_加入成员_* 与 数组_插入成员_* 系列子程序,当目标数组路径不存在或处于空状态时,底层将自动补全初始化空数组 [] 容器并完成追加写入。
  • 在 Asm_Fast_Atof 中增加浮点科学计数法指数边界限制,避免超长异常数据导致寄存器溢出。



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

【核心技术特性】
  • 汇编级降维打击与惰性扁平流 (Lazy Flat-Buffer)
    全面抛弃传统臃肿的 DOM 多叉树结构!数据在内存中保持连续字节流,依靠纯 FASM 汇编指令、SSE2 向量化以及硬件级 CRC32 哈希进行极速寻址。对于大型数组支持零拷贝 (Zero-Copy) 裸指针级提速,消除字符串申请开销。


  • 极致并发:SRW 读写锁与 DCL 机制 (Concurrent SRWLock)
    引入 Windows 原生级 SRWLock(读写锁)并包裹实现可重入递归支持。结合读前双重检查锁定 (DCL),实现彻底的“读写分离”,在多线程狂暴交叉读写、乱序抹除的极端压测下,依然保证哈希精准、死锁率为 0。


  • 突破性的 O(1) 内存复用与游标缓存 (Space Filling & Smart Cache)
    首创“预留空洞”与“Ghost Node (软删除)”机制,95% 的节点更新直接在物理内存中原地覆盖。同时针对大型数组遍历,底层植入上下文游标智能缓存,连续追加或递增读取时直接跳跃寻址,将时间复杂度从 O(N²) 暴力降维至 O(1)。


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


  • 全自动无缝智能转码 (Adaptive Encoding)
    底层集成纯汇编 SIMD 级 ASCII 探测,智能识别数据源,在 ANSI (GBK) 与 UTF-8 之间进行极速、无感知的双向无损转码,并支持复杂的 Emoji 代理对完美还原。


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



结帖率:43% (6/14)

签到天数: 16 天

发表于 23 分钟前 | 显示全部楼层   湖北省十堰市
感谢分享。。。。
回复 支持 反对

使用道具 举报

签到天数: 16 天

发表于 半小时前 | 显示全部楼层   四川省成都市

回帖奖励 +1 枚 精币

易语言 JSON 性能天花板 666
回复 支持 反对

使用道具 举报

签到天数: 16 天

发表于 1 小时前 | 显示全部楼层   河南省安阳市

回帖奖励 +1 枚 精币


支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 16 天

发表于 2 小时前 | 显示全部楼层   江苏省苏州市

回帖奖励 +1 枚 精币

支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 16 天

发表于 2 小时前 | 显示全部楼层   福建省福州市

回帖奖励 +1 枚 精币

支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2 小时前 | 显示全部楼层   浙江省湖州市

回帖奖励 +1 枚 精币

感谢分享,很有帮助!!!!
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 16 天

发表于 3 小时前 | 显示全部楼层   广西壮族自治区贺州市
这个有点厉害了。。。
回复 支持 反对

使用道具 举报

结帖率:93% (78/84)

签到天数: 12 天

发表于 3 小时前 | 显示全部楼层   福建省厦门市

回帖奖励 +1 枚 精币

局域网文件传输助手
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 13 天

发表于 3 小时前 | 显示全部楼层   宁夏回族自治区中卫市
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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