-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
workflow框架内置json解析器啦 #815
Comments
请问既然性能不及rapidjson或simdjson,那为什么要自己造轮子呢?IO密集型的工作可以理解,但是json是cpu密集型的,网上查yyjson集成超简单,就两个文件。 |
我们就是一路轮子到底的啊。最喜欢造轮子了。 |
我们当时就是看了一圈都不满足,才想自己造。而且这个json-parser写得非常好非常标准,无论是学习还是使用,都是绝佳范例。yyjson比我们快很多,但代码也太大了。 |
不错的工作氛围。我也自己手撸了一个mqtt服务器,当时是18年,市场上没发现有基于c/c++的异步非阻塞IO的开源服务器,就自己搞了一个。 |
哈哈。怎么说呢,像openssl,大多数人已经默认为系统自带的了,所以我们也认为不算什么外部依赖。但仍然有用户在安装ssl上遇到麻烦。pthread属于posix的,对于unix系不用额外安装,可以放心使用。 |
嗯,但是我之前确实遇到过一个嵌入式平台完全不支持在线更新了,无法拉取官方openssl,又无法交叉编译,最后只能用go语言交叉编译一个出来。 |
我们有个nossl分支不需要ssl。但目前还需要链接crypto,因为用了md5和sha1。这两个模块其实可以代替。 |
我这里有纯C语言算法实现的md5、sha1与sha256的代码,经过测试毫无依赖且结果正确,我甚至在自己的单片机项目中已经使用了,如何提交给你们??? |
哈哈,没事。其实这些代码都有,github上也不难找。目前我们nossl用户也能接受crypto,所以我们也没什么动力去换而已。
https://github.com/sogou/workflow/tree/nossl
…---原始邮件---
发件人: ***@***.***>
发送时间: 2022年5月3日(周二) 晚上7:35
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [sogou/workflow] workflow框架内置json解析器啦 (Issue #815)
嗯,但是我之前确实遇到过一个嵌入式平台完全不支持在线更新了,无法拉取官方openssl,又无法交叉编译,最后只能用go语言交叉编译一个出来。 因此如果你们真的在乎完全无依赖,可以尝试使用mbedtls代替openssl,它是用C写的,没有任何外部依赖,Apache License 2.0。 我也会尝试使用musl-libc代理glibc的方式实现真正的无依赖编译(网上有说musl-libc交叉编译支持更好),对于我们做物联网的公司,交叉编译太重要了。
我们有个nossl分支不需要ssl。但目前还需要链接crypto,因为用了md5和sha1。这两个模块其实可以代替。
我这里有纯C语言算法实现的md5、sha1与sha256的代码,经过测试毫无依赖且结果正确,我甚至在自己的单片机项目中已经使用了,如何提交给你们???
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
有json对象转换成字符串的接口嘛,我好像没有看到。 |
没有,workflow里的json,没有提供序列号接口,你可以看看我的序列化的示例:https://github.com/barenboim/json-parser |
为了实现对接Consul服务治理,需要引入json解析。调研过几个主流的json解析器都不是很满意,也不太想引入第三方库依赖。于是过年花了几天时间把json标准看了一遍实现了一个ANSI-C的json-parser,完整支持ECMA-404 json标准。之后也加入一些jons build的功能。主要接口如下:
json value相关接口
json object相关接口
json array相关接口
build接口
请直接参考源代码。
示例
使用示例大家可以到这个独立repo上看一下:
https://github.com/barenboim/json-parser
目前workflow的master分支,包括了这个json paser。所以,只需在代码里直接引用就可以了。
Benchmark
实测parse性能大概是cJSON的1.5倍,jsoncpp的10倍左右,但远低于rapidjson和simdjson。cJSON的parse过程不包含建立查找表,因此对于大型json object,我们的find性能远高于cJSON。
The text was updated successfully, but these errors were encountered: