开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

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

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

[复制链接]
回帖奖励 242 枚 精币 回复本帖可获得 1 枚 精币奖励! 每人限 1 次
结帖率:100% (3/3)
跳转到指定楼层
发表于 前天 17:43 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   重庆市重庆市
分享源码
界面截图:
是否带模块: -
备注说明: -
【ZJSON V1.4 更新日志】
1. 新增 二进制字节集(Base64)自动化无缝读写:
  • 新增 取字节集、置字节集 及配套的 数组_加入/插入/置成员_字节集、取数组_所有字节集 系列接口。底层引擎内置了纯汇编驱动的Base64算法,在节点读写时自动完成物理内存与 Base64 字符流的极速双向转换。

2. 新增 二维数组矩阵极速映射解析:
  • 针对多维数据嵌套场景(如矩阵坐标 [[1,2], [3,4]]),全新引入 取二维数组_所有文本/整数/小数/逻辑 接口。底层通过计算指针跨度与内存步长,结合Asm_极速拷贝,将深层JSON数组一次性批量降维、平铺并重定义为易语言原生二维数组,提升图表、批量参数等复杂结构的反序列化性能。

3. 新增 纯汇编级编解码引擎套件:
  • 新增编码_URL编码/解码 与 编码_HEX编码/解码。URL解码内置了严格的 %XX 边界侦测与防越界机制。

4. 新增 原始字面量无损提取机制:
  • 针对特殊业务场景,新增 取文本_原始 及底层 取文本_原始_按指针 接口。此模式会主动绕过底层的反转义拦截器,利用双指针直接切割物理内存块,完美保留文本中的 \n、\t 以及 \uXXXX 等原始控制字符原貌。

5. 优化 复杂键名/键值的智能 Unicode 转义:
  • 重构了底层的写入调度逻辑。在流式构建(构建_置xxx)或修改节点(_置节点_通用)时,新增底层的 _内部_文本转义 探测。引擎会自动计算待写入数据的真实转义膨胀长度(Asm_Calc_Escaped_Len),并在精准分配物理内存后,针对非ASCII控制字符或含引号文本自动进行 \uXXXX 或斜杠安全包裹,确保生成的JSON结构合法。


【模块简介】
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 代理对完美还原。


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

点评

用的不深,但是你的数组确实好用,但是成员确实不需要全取出,有的时候只需要取一个键。不全取出来。   江苏省苏州市  发表于 昨天 20:27
zyjson里面的取属性名,对应是取键名 ,取所有键名还需要多一步循环去判断,只知道位置,或者插入位置,用置成员。加入成员,插入成员。   江苏省苏州市  发表于 昨天 20:21
如果大家有什么好的想法、建议,或者在使用过程中遇到了问题,可以在评论区留言反馈。   重庆市重庆市  发表于 昨天 19:10
取键值表 可以同时获取根目录的所有键名及其原始对应值,完全不需要你自己写循环。   重庆市重庆市  发表于 昨天 19:01
如果是数组,直接用 取数组成员_XXX 和 数组_置成员_XXX。如果是对象,用 取所有键名 或 取键值表 拿到名字,再用名字去操作。   重庆市重庆市  发表于 昨天 18:53
取所有键名,需要赋值,还要循环一次去判断。[0]这个是代表了数组。所以你有取成员数,如何置成员文本呢?在只知道成员顺序,不知道键名的情况?   江苏省苏州市  发表于 昨天 18:02
问一下有没有这样的功能:json.取成员(0).取文本() 或者取全部类型,如:取键名,取键值。   江苏省苏州市  发表于 昨天 17:58

评分

参与人数 5好评 +4 精币 +10 收起 理由
cui870222829 + 1 感谢分享,很给力!~
caoljie + 1 + 3 问一下有没有这样的功能:json.取成员(0).取文本() 或者取全部类型,如:取键名,取.
chenghome + 1 + 2 支持开源~!感谢分享
EExiaolin + 1 + 3 此处应该有鼓励~
jiang910615 + 1 + 1 很好很强悍,坚持下去哦~

查看全部评分


结帖率:91% (21/23)

签到天数: 7 天

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

回帖奖励 +1 枚 精币

回复 支持 反对

使用道具 举报

结帖率:75% (3/4)

签到天数: 24 天

59
发表于 3 小时前 | 只看该作者   广东省广州市

回帖奖励 +1 枚 精币

看看就好了哦
回复 支持 反对

使用道具 举报

签到天数: 26 天

58
发表于 4 小时前 | 只看该作者   广东省汕头市
66666666666666666
回复 支持 反对

使用道具 举报

签到天数: 26 天

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

回帖奖励 +1 枚 精币

66666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 4 天

56
发表于 昨天 23:26 | 只看该作者   云南省曲靖市

回帖奖励 +1 枚 精币

我看看  应该需要
回复 支持 反对

使用道具 举报

签到天数: 13 天

55
发表于 昨天 22:09 | 只看该作者   安徽省六安市

回帖奖励 +1 枚 精币

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

使用道具 举报

结帖率:72% (26/36)

签到天数: 23 天

54
发表于 昨天 21:49 | 只看该作者   辽宁省*

回帖奖励 +1 枚 精币

感谢分享
回复 支持 反对

使用道具 举报

签到天数: 23 天

53
发表于 昨天 21:31 | 只看该作者   江苏省连云港市

回帖奖励 +1 枚 精币

感谢分享
回复 支持 反对

使用道具 举报

签到天数: 5 天

52
发表于 昨天 21:21 | 只看该作者   湖南省*

回帖奖励 +1 枚 精币

ZJSON v1.4 易语言 JSON 性能天花板
回复 支持 反对

使用道具 举报

签到天数: 4 天

51
发表于 昨天 19:50 | 只看该作者   湖南省长沙市

回帖奖励 +1 枚 精币

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

使用道具 举报

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

本版积分规则 致发广告者

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

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

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