Groovy 2.3 使用快得多的 JSON 解析器

  • Matt Raible
  • 孙镜涛

2014 年 5 月 5 日

话题:JVM语言 & 开发

Ubiquitous 公司的顾问和创始人 Rick Hightower 透露 Groovy 2.3 将会提供一个最快的 JVM JSON 解析器。在文章JSON 序列化基准中 Hightower 宣称 Groovy 的 JSON 支持和 Boon JSON 解析器在解析字符串和字符数组的时候比现在的 Jackson 解析器快 3 到 5 倍。

俄国开发者 Andrey Bloschetsov 创建了一个json 基准 GitHub 项目,目的是对所有流行的 JVM JSON 解析器进行基准测试并比较。该项目对JacksonGsonBoonGroovy 2.3 的性能做了比较。

为了测试每一个解析器,该项目选择了很多不同结构的数据:

  • Citys——一个简单对象的大数组(有 29470 个条目)。紧凑的 json 表示文件大约有 2.5MB。
  • repos.json——一个包含 4 个复杂结构对象的数组。紧凑的 json 表示文件大约 342.8KB。
  • user.json——包含一个复杂结构的对象。紧凑的 json 表示文件大约 4.2KB。
  • response.json——包含一个简单结构的对象。紧凑的 json 表示文件大约 425B。

序列化功能使用了下面两个变体测试:

  • pojo——对象被表示为 POJO 对象。
  • Maplist——对象被表示为 Map。

反序列化仅使用了一个单独的转换用例进行测试:将 String 转化成 Map。

测试的结果是 Boon 表现最好,Groovy 2.3 次之,Jackson 第三,Gson 表现最差。

为了了解这个结果对 Groovy 意味着什么,InfoQ 采访了 Pivotal 公司的 Groovy 项目经理Guillaume Laforge

InfoQ:是什么原因让你决定分支Boon并在Groovy 2.3中使用它?

我一直在跟随 Rick Hightower 在 Boon 框架上的工作,我对他的 JSON 解析技术所表现出来的速度有非常深刻的印象。因此我联系了他,询问他是否可以将这个解析技术改造到我们已有的、数年之前为 Groovy 开发的 JSON 支持中。Rick 非常友好地提供了帮助,分支 Boon 并让它作为我们 JSON 解析器的基础解析技术。同时他的基准发布的结果也让人印象非常深刻。

InfoQGroovy 2.3中的JSON解析器比之前版本中的解析器快多少?

很显然,这与你处理的 JSON 负载类型、采用什么标准衡量等方面息息相关,但是根据我从基准收集来的数据看,你可以认为 Groovy 的 JSON 解析(因此 Rick 的 Boon 解析器也是如此)比现在可用的其他 JSON 类库至少要快 3 到 4 倍。

InfoQGrails用户什么时候才能使用Groovy 2.3

我们的计划是在一星期左右的时间之内发布 Groovy 2.3,这样打算在 5 月中旬发布的 Grails 2.4 就能集成 Groovy 2.3 了。本周发布的 Grails 2.4 的第二个里程碑实际上已经包含了 Groovy 2.3-beta-2。因此 Grails 用户应该在几周之内就能使用 Groovy 2.3。

查看英文原文Groovy 2.3 gets a much faster JSON Parser

JVM语言 & 开发