中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

開源 JSON 庫解析性能對比( Jackson / Json.simple / Gson )

發布時間:2020-08-02 10:20:19 來源:網絡 閱讀:381 作者:jjjssswww 欄目:網絡安全

Json 已成為當前服務器與 web 應用之間數據傳輸的公認標準。

   微服務及分布式架構經常會使用 Json 來傳輸此類文件,因為這已經是 webAPI 的事實標準。

   不過正如許多我們習以為常的事情一樣,你會覺得這是理所當然的便不再深入比較。

   我們很少會去想用到的這些 Json 庫到底有什么不同,但事實上它們的確是不太一樣的。

   因此,我們團隊來對常用的三個 Json 庫運行測試,看看在解析不同大小文件時哪個庫的速度最快。

   在給定的文件大小下,你可以看到不同庫之間的解析速度存在著明顯的差別。

   高吞吐量的情況下,會頻繁傳輸解析小文件,因此一開始的時候可能性能的差距并不明顯。

   但如果你需要在非常高負載下頻繁地解析大量的小文件,差距就開始增大了。

   不是所有的 Json 庫都叫"特侖蘇"。如何根據使用場景才選擇正確的庫是相當重要的。

回到頂部

1. 選取的開源 Json 庫

   選擇三個個主流的Json 庫來進行基準測試:Jackson, Json .simple,GSON

  • Yidong Fang 的 Json.simple (https://github.com/fangyidong/Json -simple)。Json.simple 是一個 Json 編解碼的Java工具庫。它旨在打造一個輕量簡單且高性能的工具庫。

  • Google 的 Gson (https://github.com/google/gson)。GSON 這個Java庫能夠在 Java 對象和 Json 間進行相互轉換。同時它還提供了對Java泛型的完整支持,而且還不需要你在類上面添加注解。無需添加注解使用起來則更為便捷,同時在無法修改源代碼的情況下這還是一個必要的先決條件。

  • FasterXML 的 Jackson 項目(https://github.com/FasterXML/jackson)。Jackson 是一個數據處理的工具套件,它的亮點是流式的 Json 解析器及生成器。它是專為Java設計的,同時也能處理其它非 Json 的編碼。

回到頂部

2. 相對條件下的基準測試

   我們同時使用大文件和小文件對這些庫進行了基準測試。隨著文件大小的不同,處理這些文本所需要的系統資源也會隨之上升。

   這個基準測試主要關注兩個關鍵場景:

   1.大文件下(190MB)的解析速度與小文件(1KB)下的解析速度。大文件取自這里:https://github.com/zeMirco/sf-city-lots-Json 。

   2.小文件是從這里隨機生成的:http://www.Json -generator.com/。

   不管是大文件還是小文件,我們都會用同一個庫重復運行10次。

   對于每一個大文件,我們都會用同一個庫來分別運行10 次。

   而對于小文件,在單個庫的單次運行中會重復執行10000 次。

   在小文件測試的各次迭代中,文件內容都不會駐留在內存里。

大文件結果

開源 JSON 庫解析性能對比( Jackson / Json.simple / Gson )

   Jackson 與 Json .simple 領跑了這輪測試,整體來看 Jackson 又要略優于 Json .simple。

   從測試運行的平均結果來看,Jackson 與 Json .simple 在大文件上的表現要優秀。

   而 JsonNP 排名第三落后甚遠,Gson 更是遙遙墊底。

小文件結果

開源 JSON 庫解析性能對比( Jackson / Json.simple / Gson )

   上表記錄的是對每個文件解析10次的平均時間,總的平均時間見下方。各個庫在小文件測試中奪冠的次數如下:

  • GSON - 14

  • Json P - 5

  • Jackson -1

  • Json .simple - 0

   Gson 這個冠軍還是當之無愧的,Json.simple 第二也沒什么懸念。Jackson這輪卻是墊底了。

   盡管 Json.simple 沒有在任何文件上奪得第一,但總體來看它的解析速度卻是排名第二位的。

   還有一個值得注意的是,盡管 Jackson 是這輪最慢的庫,但是它在所有文件中的表現都非常一致。

   其它三個庫雖然偶然會比 Jackson 快很多,但在另一些文件上的解析速度卻是旗鼓相當甚至更差。

回到頂部

3. 最后總結

   解析速度并非衡量一個Json 庫的唯一指標,但它的確非常重要。

   通過運行這次基準測試,我們發現沒有一個庫能在所有文件上擊敗對手。

   大文件中表現優秀的卻在小文件上栽了根頭,反之亦然。

如果要從解析速度來看選擇哪個庫的話還得取決于你的使用場景。

  • 如果你的應用經常會處理大的 Json 文件,那么 Jackson 應該是你的菜。Gson 在大文件上表現得相當吃力。

  • 如果你主要是處理小文件請求,比如某個微服務或者分布式架構的初始化,那么 Gson 當是首選。Jackson 在小文件上的表現則不如人意。

  • 如果這兩種文件你都經常會處理到,那么在兩輪表現中都位居第二的 Json.simple 對此類場景則更為適合。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡阳县| 准格尔旗| 疏附县| 平湖市| 武隆县| 柯坪县| 上虞市| 西城区| 台中市| 滦南县| 绥德县| 民权县| 新平| 金昌市| 达日县| 宿松县| 喀喇沁旗| 元氏县| 渝北区| 泊头市| 佛冈县| 宜川县| 山西省| 长春市| 仁寿县| 德钦县| 泊头市| 新竹市| 乐山市| 商城县| 通州市| 哈尔滨市| 黑河市| 密山市| 凌源市| 本溪市| 洪洞县| 宁蒗| 左贡县| 杂多县| 德兴市|