使用DSLJson代替Jackson?

时间:2018-12-10 06:45:54

标签: java json jackson

在检查从Json值获取对象的情况下,DslJson是更快的Jackson,因此我们应该使用DslJson代替JackSon吗?

正如我在许多在线文档中所见,

B / c在杰克逊看来比Dsljson更受欢迎,因此,如果速度更快,为什么这个API不受欢迎?有什么原因吗?

我的小检查器:

public class App {

public static void main(String[] args) throws IOException {

    String jsonString = "{\"kind\":\"dog\",\"name\":\"misao\",\"age\":1}";
    byte[] bytes = jsonString.getBytes();
    Pet misa = new Pet("dog", "misa", 1);

    // get object from json String
    // Jackson
    ObjectMapper mapper = new ObjectMapper();

    long currentTime1 = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        Pet misao = mapper.readValue(jsonString, Pet.class);
    }
    System.out.println(System.currentTimeMillis() - currentTime1); // 680 ms

    long currentTime2 = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        Pet misao = mapper.readValue(bytes, Pet.class);
    }
    System.out.println(System.currentTimeMillis() - currentTime2); // 623 ms

    // DSLJson
    DslJson<Object> dslJson = new DslJson<Object>();
    long currentTime3 = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        Pet misao = dslJson.deserialize(Pet.class, bytes, bytes.length);
    }
    System.out.println(System.currentTimeMillis() - currentTime3); // 182 ms
}}

2 个答案:

答案 0 :(得分:0)

我认为DslJson并不那么受欢迎,因为许多开发人员宁愿使用旧的已知库又要使用新的库。杰克逊在社区中享誉多年,并由许多开发人员创建和改进,并成为标准解决方案。 DslJson-由2个开发人员创建的新库,只有2年的历史。也许将来它会成为一种新的标准解决方案,但是目前几乎没人知道它(与Jackson相比)。因此,如果它很稳定,则可以最好,更快速地满足您的需求-只需使用它即可。

答案 1 :(得分:0)

我的队友使用gson,jackson和dslJson进行了基准测试。

1M序列化+反序列化基准

工具:以毫秒为单位的时间


Gson:4344

杰克逊:3104

DSL Json:2299

与杰克逊相比,DSLJson更快。