在检查从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
}}
答案 0 :(得分:0)
我认为DslJson并不那么受欢迎,因为许多开发人员宁愿使用旧的已知库又要使用新的库。杰克逊在社区中享誉多年,并由许多开发人员创建和改进,并成为标准解决方案。 DslJson-由2个开发人员创建的新库,只有2年的历史。也许将来它会成为一种新的标准解决方案,但是目前几乎没人知道它(与Jackson相比)。因此,如果它很稳定,则可以最好,更快速地满足您的需求-只需使用它即可。
答案 1 :(得分:0)
我的队友使用gson,jackson和dslJson进行了基准测试。
1M序列化+反序列化基准
Gson:4344
杰克逊:3104
DSL Json:2299
与杰克逊相比,DSLJson更快。