Easyjson 快速JSON序列化 Easyjson

blov • 3896 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
Easyjson用于序列化JSON数据,采用Go语言编写,而不是通过使用反射生成编组代码。一个库的目的之一是使所生成的代码足够简单,使得它可以容易地优化或固定。另一个目标是为用户提供不可定制的“encoding/json”,如产生snake_case名称或启用默认“omitempty“生成代码。 用法: <pre class="brush:shell;toolbar: true; auto-links: false;">go get github.com/mailru/easyjson/... easyjson -all &lt;file&gt;.go</pre> 这将 利用编组/解组方法 结构 生成&lt;file&gt;_easyjson.go 。 限制: * The library is at an early stage, there are likely to be some bugsand some features of &#39;encoding/json&#39; may not be supported. Please report such cases, so that they may be fixed sooner. * Unsafe package is used by the code. While a non-unsafe version ofeasyjson can be made in the future, using unsafe package simplifies alot of code by allowing to use &#39;switch&#39; for filling out structs andworking around limitations of standard functions like&#39;strconv.ParseInt&#39;. * Floats are currently formatted with default precision for &#39;strconv&#39;package. It is obvious that it is not always the correct way to handleit, but there aren&#39;t enough use-cases for floats at hand to do anythingbetter. * During parsing, parts of JSON that are skipped over are notsyntactically validated more than required to skip matching parentheses. * No true streaming support for encoding/decoding. For many use-casesand protocols, data length is typically known on input and needs to beknown before sending the data. 解析: lib json size MB/s allocs/op B/op standard regular 22 218 10229 standard small 9.7 14 720 -------- ----------- ------ ----------- ------- easyjson regular 125 128 9794 easyjson small 67 3 128 -------- ----------- ------ ----------- ------- ffjson regular 66 141 9985 ffjson small 17.6 10 488 -------- ----------- ------ ----------- ------- codec regular 55 434 19299 codec small 29 7 336 -------- ----------- ------ ----------- ------- ujson regular 103 N/A N/A 编组,one goroutine lib json size MB/s allocs/op B/op standard regular 75 9 23256 standard small 32 3 328 standard large 80 17 1.2M ---------- ----------- ------ ----------- ------- easyjson regular 213 9 10260 easyjson* regular 263 8 742 easyjson small 125 1 128 easyjson large 212 33 490k easyjson* large 262 25 2879 ---------- ----------- ------ ----------- ------- ffjson regular 122 153 21340 ffjson** regular 146 152 4897 ffjson small 36 5 384 ffjson** small 64 4 128 ffjson large 134 7317 818k ffjson** large 125 7320 827k ---------- ----------- ------ ----------- ------- codec regular 80 17 33601 codec*** regular 108 9 1153 codec small 42 3 304 codec*** small 56 1 48 codec large 73 483 2.5M codec*** large 103 451 66007 ---------- ----------- ------ ----------- ------- ujson regular 92 N/A N/A 编组,并发 lib json size MB/s allocs/op B/op standard regular 252 9 23257 standard small 124 3 328 standard large 289 17 1.2M ---------- ----------- ------- ----------- ------- easyjson regular 792 9 10597 easyjson* regular 1748 8 779 easyjson small 333 1 128 easyjson large 718 36 548k easyjson* large 2134 25 4957 ---------- ----------- ------ ----------- ------- ffjson regular 301 153 21629 ffjson** regular 707 152 5148 ffjson small 62 5 384 ffjson** small 282 4 128 ffjson large 438 7330 1.0M ffjson** large 131 7319 820k ---------- ----------- ------ ----------- ------- codec regular 183 17 33603 codec*** regular 671 9 1157 codec small 147 3 304 codec*** small 299 1 48 codec large 190 483 2.5M codec*** large 752 451 77574
授权协议:
开发语言:
Google Go 查看源码»
操作系统:
跨平台
3896 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传