Java 中 json 字符串转对象(map)、或者对象转 json 字符串慢?

2020-03-26 11:07:19 +08:00
 Junjunya
听 Java 同事说,Java 中处理 json 比较耗性能
好奇为啥会这样,打算做个测试,比较下 Java 和其他语言对 json 处理的快慢,
所以来问问大佬们,怎么写出性能高的 Java 的处理 json 的代码,方便测试
2622 次点击
所在节点    Java
11 条回复
xuanbg
2020-03-26 11:32:39 +08:00
哪里慢了???反正我从来没觉得序列化 /反序列化是性能瓶颈
imzhoukunqiang
2020-03-26 11:36:16 +08:00
处理 json 还不就是 GSON,Fastjson,Jackson 那么几个库,你想手写吗
hantsy
2020-03-26 11:39:47 +08:00
@imzhoukunqiang 除了这些库外,现在可以用 JakartaEE 标准中 JSON-P,JSONB 解决。
guixiexiezou
2020-03-26 11:47:36 +08:00
也不算慢吧,大概处理 1 个 json 要 40ms,处理 100 个 json 要 100ms,处理 10000 个 json,要 400ms 吧。看 json 大小
chendy
2020-03-26 11:59:57 +08:00
测试了一下,Jackson
两个字符串字段,序列化每秒六百五十万次,反序列化每秒四百五十万次
二十六个字符串字段,序列化每秒一百万次,反序列化每秒四十八万次
不很快,但是通常不会是瓶颈
Aresxue
2020-03-26 12:40:08 +08:00
处理 json 从来都不是瓶颈,至于说比性能,要看谁比, 比 C++肯定不信, 但一些静态语言应该还是比得过的。
所以要想快用 C++写好, 然后通过 JNI 调用
Jooooooooo
2020-03-26 12:52:04 +08:00
超大的 String 确实是会慢的, 特别如果你用这个来打日志, 小心用
Vegetable
2020-03-26 12:59:04 +08:00
处理 JSON 本身是一个很繁重的工作啊,时间空间都是线性的,好在常用 JSON 都不会太大,很难成为业务瓶颈吧,别想太多。
Junjunya
2020-03-26 13:02:24 +08:00
业务场景是用在生成某个多个表的快照上, 两个方案,一是完全按照表的结构再建多个快照表,另一个方案就是 一个大 json 存原始表的所有数据。

Java 同事就说 json 非常耗性能,然后就推荐建表来解决这个问题。
然后我就好奇为什么非常耗性能,打算做个测试比较下
EscYezi
2020-03-26 13:36:07 +08:00
如果是表的快照那 json 的长度会很大。之前就遇到过从 redis 里读取一个大概有十多万个元素的 json 数组,每个元素是具有三个属性的 json 对象,然后反序列化的时候程序直接卡住了,后来想办法把 json 对象数组变成字符串数组,才能正常反序列化。
如果表中数据很多而且有多个字段,反序列化确实会成为瓶颈,不过序列化的时候倒没遇到这个问题
Giny
2020-03-26 13:40:51 +08:00
@Junjunya [楼主] #9 原文:“业务场景是用在生成某个多个表的快照上, 两个方案,一是完全按照表的结构再建多个快照表,另一个方案就是 一个大 json 存原始表的所有数据。Java 同事就说 json 非常耗性能,然后就推荐建表来解决这个问题。然后我就好奇为什么非常耗性能,打算做个测试比较下”
======
回复:个人感觉 方案一更合理一些,如果数据量不大(比如字典表 配置表) 两种方案都差不多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX