开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1234|回复: 153
打印 上一主题 下一主题
收起左侧

[易语言纯源码] 【开源】ZJSON:跻身全球顶尖梯队的易语言极速 JSON

[复制链接]
回帖奖励 159 枚 精币 回复本帖可获得 1 枚 精币奖励! 每人限 1 次
结帖率:100% (3/3)
跳转到指定楼层
楼主
发表于 前天 17:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   重庆市重庆市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 z573277679 于 2026-3-1 18:47 编辑

本次开源顺带更新,性能表现有较大幅度提升(主要是前面写代码偷懒了,这份开源算是满血版本)。如果你需要进行性能测试,有的测试项可能因为太快而无法准确反应出真实性能。推荐使用我之前开源的纳秒级高精度计时/微秒延时v2.0(终版)进行测试。
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14871490
(出处: 精易论坛)

我在论坛几乎一直是分享纯源码,自己的名字却一直是z573277679(因为无法修改)。这次带来的 ZJSON命名正是取自我论坛的 ID 首字母。
关于这个模块:
  • 关于性能:毫不夸张地说,它的性能目前稳居易语言界 Top 1,并跻身全球顶尖梯队。
  • 关于设计:我没有给它堆砌花里胡哨的功能。在我看来,JSON 引擎就该“回归它本来的样子”——极致的快,极简的操作。它不只是一个工具,更是我对易语言性能极限的一次致敬。



【模块简介】
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。


【极限基准测试 (单核 x86 最新实测)】
(测试环境:标准 1000 对象 × 10 字段混合类型数据集,全量内存级压测)
  • 解析吞吐量 (Parse): 稳态 588 ~ 724 MB/s
  • 序列化速度 (Stringify): 370 ~ 499 MB/s
  • 流式极速构建 (Sequential Build): 12,500,000+ Ops/s (百万节点耗时<1秒)
  • 纯哈希寻址 (Hash Search): 8,000,000 ~ 9,170,000+ Ops/s

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

点评

这个模块支持带有 Unicode 内容。如果有疑问或者问题进行反馈,请在评论区留言,看到我会进行回复。   重庆市重庆市  发表于 昨天 19:12
是否支持带有Unicode内容的json?   上海市上海市  发表于 昨天 16:59
整个模块仅用到核心支持库,无API,汇编代码大概3000+行。如果此源码对你有帮助,麻烦帮忙给个好评吧   重庆市重庆市  发表于 昨天 10:28

评分

参与人数 10好评 +6 精币 +17 收起 理由
cui870222829 + 1 感谢分享,很给力!~
asd8970848 + 1 + 2 支持开源~!感谢分享
zjbin1989 + 1 感谢分享,很给力!~
chuanqibuding + 1 感谢分享!
910265444 + 1 支持开源~!感谢分享
LLJ + 1 + 3 支持开源~!感谢分享
cbl521ysys + 1 感谢分享,很给力!~
天雷 + 1 + 3 支持开源~!感谢分享
quary + 1 + 2 新技能已get√
重新归零 + 1 + 3 支持开源~!感谢分享

查看全部评分


结帖率:100% (3/3)

签到天数: 2 天

来自 60楼
 楼主| 发表于 昨天 11:29 | 只看该作者   重庆市重庆市
yaokui6659 发表于 2026-3-2 10:41
解析15000条数组,每个数组30个参数,需要全部放进超级列表框,有没有什么快速办法,这踏马插入的太慢了
另 ...

开始运行被调试程序
* “构建耗时: ” | 0.250000
* “[验证] 第 1 条数据: ” | “user_1” | “user1@example.com” | “Shanghai”
* “[验证] 第 15000 条数据: ” | “user_15000” | “user15000@example.com” | “Beijing”
* “解析耗时: ” | 0.625000
被调试易程序运行完毕

  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
kvZJSON 
item_kvZJSON 
i整数型 
a文本型 
c文本型 
t1整数型 
t2整数型 
耗时秒双精度小数型 
成员数组文本型0
数据量整数型 
数据量 = 15000
t1 = 取启动时间 ()
kv.构建_重置 ()
kv.构建_开始数组 (“Data”)
计次循环首 (数据量, i)
kv.构建_开始对象 (“”)
kv.构建_置整数 (“id”, i)
kv.构建_置文本 (“username”, “user_”到文本 (i))
kv.构建_置文本 (“email”, “user”到文本 (i)“@example.com”)
kv.构建_置整数 (“age”, 18 + i % 60)
kv.构建_置逻辑 (“verified”, i % 2 = 0)
kv.构建_置小数 (“balance”, i × 1.5 + 0.99)
kv.构建_置文本 (“city”, 选择 (i % 5 = 0, “Beijing”, 选择 (i % 5 = 1, “Shanghai”, 选择 (i % 5 = 2, “Guangzhou”, 选择 (i % 5 = 3, “Shenzhen”, “Hangzhou”)))))
kv.构建_置文本 (“bio”, “This is a sample biography text...”)
kv.构建_置整数 (“yid”, i)
kv.构建_置文本 (“yusername”, “user_”到文本 (i))
kv.构建_置文本 (“yemail”, “yuser”到文本 (i)“@example.com”)
kv.构建_置整数 (“yage”, 18 + i % 60)
kv.构建_置逻辑 (“yverified”, i % 2 = 0)
kv.构建_置小数 (“ybalance”, i × 1.5 + 0.99)
kv.构建_置文本 (“ycity”, “Shanghai”)
kv.构建_置文本 (“ybio”, “This is another bio text...”)
kv.构建_置整数 (“kid”, i)
kv.构建_置文本 (“kusername”, “user_”到文本 (i))
kv.构建_置文本 (“kemail”, “kuser”到文本 (i)“@example.com”)
kv.构建_置整数 (“kage”, 18 + i % 60)
kv.构建_置逻辑 (“kverified”, i % 2 = 0)
kv.构建_置小数 (“kbalance”, i × 1.5 + 0.99)
kv.构建_置文本 (“kcity”, “Guangzhou”)
kv.构建_置文本 (“kbio”, “This is another bio text...”)
kv.构建_置整数 (“oid”, i)
kv.构建_置文本 (“ousername”, “user_”到文本 (i))
kv.构建_置文本 (“oemail”, “ouser”到文本 (i)“@example.com”)
kv.构建_置整数 (“oage”, 18 + i % 60)
kv.构建_置逻辑 (“overified”, i % 2 = 0)
kv.构建_置小数 (“obalance”, i × 1.5 + 0.99)
kv.构建_置文本 (“ocity”, “Shenzhen”)
kv.构建_置文本 (“obio”, “This is another bio text...”)
kv.构建_结束对象 ()
计次循环尾 ()
kv.构建_结束数组 ()
a = kv.构建_取结果 ()
t2 = 取启动时间 ()
耗时秒 (t2 - t1) × 1 ÷ 1000
调试输出 (“构建耗时: ”, 耗时秒)
kv.清空 ()
kv.载入JSON (a)
t1 = 取启动时间 ()
kv.取数组_所有文本 (“Data”, 成员数组)
计次循环首 (取数组成员数 (成员数组), i)
item_kv.载入JSON (成员数组 [i])
c = item_kv.取文本 (“username”)
如果真 (i = 1 i = 数据量)
调试输出 (“[验证] 第 ”到文本 (i)“ 条数据: ”, c, item_kv.取文本 (“email”), item_kv.取文本 (“city”))

c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“city”)
c = item_kv.取文本 (“bio”)
c = item_kv.取文本 (“yusername”)
c = item_kv.取文本 (“yemail”)
c = item_kv.取文本 (“ycity”)
c = item_kv.取文本 (“ybio”)
c = item_kv.取文本 (“kusername”)
c = item_kv.取文本 (“kemail”)
c = item_kv.取文本 (“kcity”)
c = item_kv.取文本 (“kbio”)
c = item_kv.取文本 (“ousername”)
c = item_kv.取文本 (“oemail”)
c = item_kv.取文本 (“ocity”)
c = item_kv.取文本 (“obio”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
c = item_kv.取文本 (“username”)
c = item_kv.取文本 (“email”)
计次循环尾 ()
t2 = 取启动时间 ()
耗时秒 (t2 - t1) × 1 ÷ 1000
如果真 (耗时秒 < 0.001)
耗时秒 = 0.001

调试输出 (“解析耗时: ”, 耗时秒)


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

回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 3 天

151
发表于 1 小时前 | 只看该作者   广东省东莞市

回帖奖励 +1 枚 精币

看看                  
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

150
发表于 1 小时前 | 只看该作者   福建省福州市

回帖奖励 +1 枚 精币

232332322332
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 2 天

149
发表于 4 小时前 | 只看该作者   贵州省贵阳市

回帖奖励 +1 枚 精币

232332322332
回复 支持 反对

使用道具 举报

签到天数: 3 天

148
发表于 5 小时前 | 只看该作者   四川省乐山市

回帖奖励 +1 枚 精币

看看解析能力如何
回复 支持 反对

使用道具 举报

结帖率:72% (13/18)

签到天数: 1 天

147
发表于 5 小时前 | 只看该作者   海南省海口市

回帖奖励 +1 枚 精币

66666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:22% (2/9)

签到天数: 2 天

146
发表于 6 小时前 | 只看该作者   广东省东莞市

回帖奖励 +1 枚 精币

来看下 怎么操作的
回复 支持 反对

使用道具 举报

签到天数: 3 天

145
发表于 6 小时前 | 只看该作者   广东省汕头市

回帖奖励 +1 枚 精币

6666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 2 天

144
发表于 昨天 23:20 | 只看该作者   贵州省黔南布依族苗族自治州

回帖奖励 +1 枚 精币

跻身全球顶尖梯队的易语言极速 JSON
回复 支持 反对

使用道具 举报

签到天数: 2 天

143
发表于 昨天 23:18 | 只看该作者   重庆市重庆市

回帖奖励 +1 枚 精币

整个模块仅用到核心支持库,无API,汇编代码大概3000+行
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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