开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 20627|回复: 99
收起左侧

[易源码分享] [simdjson] x [易语言] 目前最快的 JSON 解析

[复制链接]
结帖率:100% (26/26)
发表于 2019-3-3 15:22:30 | 显示全部楼层 |阅读模式   安徽省池州市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 镇坛道德标杆 于 2019-3-3 19:33 编辑

之前发了个粗糙的版本, https://bbs.125.la/thread-14322774-1-1.html

今天更新一下, 解决之前贴子中提到的一些问题:

1. 封装了几个自定义的函数, 例如 move_to_root, array_get_length, array_move_to_index, 这样可以少调用一些 X64Call;

2. 简单实现了对于类似 [0].A.B[0].C 的路径的解析取值.

接下来说一下遇到的问题和一些体验:

1. 我构造的测试数据大小是大约是 96MB, 在我的机器上可以正常解析, 再大一些(例如 128MB)会崩溃, 崩溃位于 ParsedJson.allocateCapacity , 琢磨了下没琢磨明白 (温馨提示: 真要是这种大小级别了还是建议各位用 SAX 方式);

2. 除了上面这点, 还有个已知的比较隐蔽 BUG, 貌似是 print_ 这个函数的锅: 静态编译之后, 在 demo 中如果 print_ 递归打印了一个 Object 例如 [0], 再点击解析就会在 iterator_free 崩溃. 如果只是取值就不崩溃.

3. 这个库会拷贝数据, 在针对过长的数据的时候这不是好做法, 感觉这个库更像是科研性质, 和那些千锤百炼的老牌库相比, 目前可能只有速度占优势了;

4. 机器或者其它方面的限制, 我用易语言跑不出宣传文章中的千兆字节每秒, 不过几百 MB/s 还是有的;

5. 由于解析的时候它会拷贝数据, 我不清楚有没有可能会产生 64-bit 的内存地址, 暂时就是指针到文本当 32-bit 用, 但心里很没底, 希望 eWOW64Ext 作者有空可以帮忙看一下... @shier2817  谢谢!

6. 库用的是 10.0.17134.0 版本的 SDK /MT 编译的, 但已经无法支持 WindowXP, 低版本的 SDK 编译不过去, 对这些指令不熟悉所以没有去探究原因(也许就是不支持, 详情请翻阅 MSDN);

7. 关于编译模式: 用 MinSizeRel 生成的话, 会导致 double 取值异常, 具体原因未深究, 所以默认使用了 Release . 我将会在附件中附上三种编译模式生成的文件供各位研究: RelWithDebInfo, MinSizeRel, Release;

8. 我对于 WOW64Ext 方面的知识不了解, 所以无法保证代码的稳定性, 抛砖引玉, 所以如果你希望封装完整的模块和工具, 可以进群与我交流.

交流QQ群:   547525064


附件解压密码: 321

用到的模块:

1. 感谢 eWOW64Ext : https://bbs.125.la/thread-14322538-1-1.html

2. Jβec : https://bbs.125.la/thread-14069145-1-1.html

[new]simdjson.zip (890.98 KB, 下载次数: 564)

评分

参与人数 13好评 +12 精币 +96 收起 理由
仰望山外山 + 1 + 2 此处应该有鼓励~
就是那个秋 + 1 + 2 感谢发布原创作品,精易因你更精彩!
topking + 1 + 1 新技能已get√
易语言资源网 + 1 + 5 支持开源~!感谢分享
aaaajjjj + 1 + 2 支持开源~!感谢分享
流星暴雨 + 1 + 2 说好的评分
羽傲天 + 1 + 2 支持开源~!感谢分享
日勿日勿 + 1 + 2 支持开源~!感谢分享!!
被封禁言 + 1 支持开源~!感谢分享
Hoibben + 1 + 66 支持开源~!感谢分享
冰点 + 1 + 5 感谢发布原创作品,精易因你更精彩!
zl2017 + 1 + 2 感谢分享,很给力!~
酷宝贝 + 1 + 4 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

结帖率:93% (246/265)

签到天数: 7 天

发表于 2023-6-26 11:24:49 | 显示全部楼层   广西壮族自治区崇左市
QQ截图20230626112401.png


运行不了啊
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2023-4-29 00:27:44 | 显示全部楼层   河北省秦皇岛市
支持一下了
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2022-11-27 07:38:46 | 显示全部楼层   广东省中山市
好喜欢你的头像,我借用一下用作玩游戏的头像。谢谢
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2022-10-16 15:57:23 | 显示全部楼层   河北省邢台市
群已经塞满了
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2022-8-20 16:58:04 | 显示全部楼层   海南省海口市
现在不是有yyjson了嘛 你这个如何
回复 支持 反对

使用道具 举报

结帖率:57% (4/7)

签到天数: 1 天

发表于 2022-5-16 17:00:06 | 显示全部楼层   四川省成都市
可以,速度很快
回复 支持 反对

使用道具 举报

发表于 2021-7-27 18:35:46 | 显示全部楼层   重庆市重庆市
嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻
回复 支持 反对

使用道具 举报

发表于 2021-3-11 10:14:18 | 显示全部楼层   广东省深圳市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2021-3-11 10:14:04 | 显示全部楼层   广东省深圳市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 24 天

发表于 2021-1-6 00:52:14 | 显示全部楼层   浙江省绍兴市
谢谢大佬分享 支持支持
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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