日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java json to bson_JSON BSON 效率比较

發布時間:2024/3/24 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json to bson_JSON BSON 效率比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于基礎知識的學習和理解,請參看兩者的官方網站:

這里主要介紹兩者對于POJO的轉換方式以及效率比對。

1. JSON

Jackson提供三種方法處理JSON:

Streaming API?:reads and writes JSON content as discrete events. 該方式效率最高(相比于其他兩種方式)

Tree Model:provides a mutable in-memory tree representation of a JSON document,該方式最靈活

Data Binding:couverts JSON to and from POJOs based either on property accessor conventions or annotations. 這種方式通常是最方便的。

先提供一個實體類 -- User entity (User.java 代碼參看附件),JSON表示如下:

{

"name" : { "first" : "Joe", "last" : "Sixpack" },

"gender" : "MALE",

"verified" : false,

"userImage" : "Rm9vYmFyIQ=="

}

JSON 和 POJO的轉換程序如下:

public class JsonPojoMapper {

private static ObjectMapper m = new ObjectMapper();

private static JsonFactory jf = new JsonFactory();

public static Object fromJson(String jsonAsString, Class pojoClass) throws Exception {

return m.readValue(jsonAsString, pojoClass);

}

public static String toJson(Object pojo, boolean prettyPrint)

throws IOException {

StringWriter sw = new StringWriter();

JsonGenerator jg = jf.createGenerator(sw);

if (prettyPrint) {

jg.useDefaultPrettyPrinter();

}

m.writeValue(jg, pojo);

return sw.toString();

}

}

2. BSON

BSON short for Binary JSON, is a binary-encoded serialization of JSON-like documents.

BSON目前主要用于MongoDB中,是MongoDB的數據存儲格式。

BSON文檔到字符文檔的轉換類似于JSON,具體可參考下面的測試代碼

3. performance測試

更高的效率是BSON的主要目標之一,但究竟和JSON比效率如何?

測試場景:100W條數據的轉換,從POJO轉換為JSON/BSON, 然后再轉換為POJO

測試代碼:

public class PerformanceBsonJson {

private User src = new User();

private User dst = new User();

@Before

public void setUP() {

src.setUserName("ca bj test");

src.setPassword("ca admin");

}

@Test

public void testJson() throws Exception {

long begin = System.currentTimeMillis();

for (int i = 0; i < 1000000; i++) {

String jsonString = JsonPojoMapper.toJson(src, true);

dst = (User) JsonPojoMapper.fromJson(jsonString, User.class);

}

long end = System.currentTimeMillis();

System.out.println("Transfer Json cost is: " + (end - begin) + "ms");

}

@Test

public void testBson() throws JsonProcessingException, JsonMappingException, IOException {

BsonFactory fac = new BsonFactory();

fac.enable(BsonGenerator.Feature.ENABLE_STREAMING);

ObjectMapper mapper = new ObjectMapper(fac);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

long begin = System.currentTimeMillis();

for(int i=0; i<1000000; i++){

mapper.writeValue(baos, src);

ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());

dst = mapper.readValue(bais, User.class);

baos.reset();

}

long end = System.currentTimeMillis();

System.out.println("Transfer Bson cost is: " + (end-begin) +"ms");

}

}

測試結果:

Transfer Bson cost is: 4939ms

Transfer Json cost is: 2339ms

PS:測試結果根據選用第三方轉換類庫,以及轉換方式不同會有不同結果。

但這種場景至少說明,在某些情況下JSON比BSON效率更高。

詳細可執行代碼參考附件內容。

總結

以上是生活随笔為你收集整理的java json to bson_JSON BSON 效率比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。