Java 中 json 字符串转对象(map)、或者对象转 json 字符串慢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Junjunya
V2EX    Java

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

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

    Java 同事就说 json 非常耗性能,然后就推荐建表来解决这个问题。
    然后我就好奇为什么非常耗性能,打算做个测试比较下
    EscYezi
        10
    EscYezi  
       2020-03-26 13:36:07 +08:00 via iPhone
    如果是表的快照那 json 的长度会很大。之前就遇到过从 redis 里读取一个大概有十多万个元素的 json 数组,每个元素是具有三个属性的 json 对象,然后反序列化的时候程序直接卡住了,后来想办法把 json 对象数组变成字符串数组,才能正常反序列化。
    如果表中数据很多而且有多个字段,反序列化确实会成为瓶颈,不过序列化的时候倒没遇到这个问题
    Giny
        11
    Giny  
       2020-03-26 13:40:51 +08:00
    @Junjunya [楼主] #9 原文:“业务场景是用在生成某个多个表的快照上, 两个方案,一是完全按照表的结构再建多个快照表,另一个方案就是 一个大 json 存原始表的所有数据。Java 同事就说 json 非常耗性能,然后就推荐建表来解决这个问题。然后我就好奇为什么非常耗性能,打算做个测试比较下”
    ======
    回复:个人感觉 方案一更合理一些,如果数据量不大(比如字典表 配置表) 两种方案都差不多
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2706 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 09:10 PVG 17:10 LAX 01:10 JFK 04:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86