Junjunya
V2EX  ›  Java

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

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

    Java 同事就说 json 非常耗性能,然后就推荐建表来解决这个问题。
    然后我就好奇为什么非常耗性能,打算做个测试比较下
    EscYezi
        10
    EscYezi  
       Mar 26, 2020 via iPhone
    如果是表的快照那 json 的长度会很大。之前就遇到过从 redis 里读取一个大概有十多万个元素的 json 数组,每个元素是具有三个属性的 json 对象,然后反序列化的时候程序直接卡住了,后来想办法把 json 对象数组变成字符串数组,才能正常反序列化。
    如果表中数据很多而且有多个字段,反序列化确实会成为瓶颈,不过序列化的时候倒没遇到这个问题
    Giny
        11
    Giny  
       Mar 26, 2020
    @Junjunya [楼主] #9 原文:“业务场景是用在生成某个多个表的快照上, 两个方案,一是完全按照表的结构再建多个快照表,另一个方案就是 一个大 json 存原始表的所有数据。Java 同事就说 json 非常耗性能,然后就推荐建表来解决这个问题。然后我就好奇为什么非常耗性能,打算做个测试比较下”
    ======
    回复:个人感觉 方案一更合理一些,如果数据量不大(比如字典表 配置表) 两种方案都差不多
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5967 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 06:13 · PVG 14:13 · LAX 23:13 · JFK 02:13
    ♥ Do have faith in what you're doing.