亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

JSON庫的性能比較

發布時間:2021-09-03 12:54:23 來源:億速云 閱讀:429 作者:chen 欄目:web開發

這篇文章主要講解了“JSON庫的性能比較”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JSON庫的性能比較”吧!

 

Java 中哪個 JSON 庫的解析速度是最快的?

JSON 已經成為當前服務器與 WEB  應用之間數據傳輸的公認標準,不過正如許多我們所習以為常的事情一樣,你會覺得這是理所當然的便不再深入思考了。我們很少會去想用到的這些 JSON  庫到底有什么不同,但事實上它們的確是不太一樣的。因此,我們運行了一個基準測試來對常用的幾個 JSON  庫進行了測試,看看在解析不同大小的文件時哪個庫的速度是最快的。下面我會把結果分享給大家。

JSON 通常用于傳輸及解析大文件。這對運行在 Hadoop 或者是 Spark  集群上的數據處理程序而言是個很常見的場景。在給定的文件大小下,你可以看到不同庫之間的解析速度存在著明顯的差別。

高吞吐量的情況下,會頻繁地傳輸并解析小文件,因此一開始的時候可能性能的差距并不明顯。但如果你需要在非常高負載下頻繁地解析大量的小文件,差距就開始增大了。微服務及分布式架構經常會使用  JSON 來傳輸此類文件,因為這已經是 WEB API 的事實標準。

不是所有的 JSON 庫都叫” 特侖蘇”。如何根據使用場景才選擇正確的庫是相當重要的。希望這個基準測試能夠對你有所幫助。

JSON 庫

JSON.simple vs GSON vs Jackson vs JSONP

我們選擇了四個主流的 JSON 庫來進行基準測試:JSON.simple, GSON, Jackson 以及 JSONP。在 Java 中進行 JSON  解析通常都會用到這幾個庫,選擇它們的原因是它們在 Github 項目中的亮相頻率很高。

下面便是我們所測試的 JSON 庫:

  • Yidong Fang 的 JSON.simple 。JSON.simple 是一個 JSON 編解碼的 Java  工具庫。它旨在打造一個輕量簡單且高性能的工具庫。

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

  • FasterXML 的 Jackson 項目。Jackson 是一個數據處理的工具套件,它的亮點是流式的 JSON 解析器及生成器。它是專為 Java  設計的,同時也能處理其它非 JSON 的編碼。從我們在 Github 中的統計來看,它應該是***的 JSON 解析器。

  • Oracle 的 JSONP。JSONP (JSON Processing) 是 JSON 處理的一套 Java API, 從名字來看它就是用來生成及解析  JSON 串的。這是 JSR353 規范的一個開源實現。

基準測試

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

這個基準測試主要關注兩個關鍵場景:大文件下 (190MB) 的解析速度與小文件(1KB)下的解析速度。大文件取自這里。小文件是從這里隨機生成的。

不管是大文件還是小文件,我們都會用同一個庫重復運行 10 次。對于每一個大文件,我們都會用同一個庫來分別運行 10  次。而對于小文件,在單個庫的單次運行中會重復執行 10000 次。在小文件測試的各次迭代中,文件內容都不會駐留在內存里,測試所運行的機器是 AWS 的  c3.large 實例。

大文件的完整測試結果如下,我對小文件的結果求了個平均值。

大文件結果

JSON庫的性能比較

結果相差甚大!Jackson 與 JSON.simple 領跑了這輪測試,整體來看 Jackson 又要略優于  JSON.simple。從測試運行的平均結果來看,Jackson 與 JSON.simple 在大文件上的表現要優秀一些,而 JSONP  排名第三落后甚遠,GSON 更是遙遙墊底。

我們再把結果換算成百分比看下。平均來看 Jackson 要勝出一籌。下面是結果的百分比數據,可以從兩個維度來進行比較:

JSON庫的性能比較

不同庫之間的性能差別著實不小。

結論:Jackson 以略微優勢勝出。JSON.simple 緊隨其后,而剩下兩個庫則遠遠落后。

小文件結果

JSON庫的性能比較

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

  • GSON - 14

  • JSONP - 5

  • Jackson -1

  • JSON.simple - 0

這個結果貌似很有說服力。然而,從所有文件的平均結果來看,GSON 這個冠軍還是當之無愧的,JSON.simple 和 JSONP  的二三名之爭應該沒什么懸念。Jackson 這輪卻是墊底了。盡管 JSON.simple 沒有在任何文件上奪得***,但總體來看它的解析速度卻是排名第二位的。而  JSONP 盡管在許多文件上都拿到了冠軍,但平均來看卻只拿到了第三名的成績。

還有一個值得注意的是,盡管 Jackson 是這輪最慢的庫,但是它在所有文件中的表現都非常一致,其它三個庫雖然偶然會比 Jackson  快很多,但在另一些文件上的解析速度卻是旗鼓相當甚至更差。

我們再把這些數字轉換成百分比看看,還是同樣的兩個維度:

JSON庫的性能比較

和大文件測試相比,這次的差距相對要小一些,但也還是不容忽視的。

結論:很不幸的是,JSON.simple 又以微弱的劣勢與冠軍失之交臂,這輪 GSON 勝。JSONP 仍是千年老三而這回 Jackson  則趕了個晚集。

總結

解析速度并非衡量一個 JSON  庫的唯一指標,但它的確非常重要。通過運行這次基準測試,我們發現沒有一個庫能在所有文件上擊敗對手。大文件中表現優秀的卻在小文件上栽了根頭,反之亦然。

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

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

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

  • 如果這兩種文件你都經常會處理到,那么在兩輪表現中都位居第二的 JSON.simple 對此類場景則更為適合。在不同的文件大小上 Jackson 和  GSON 的表現都不太好。

除非不考慮解析速度,不然 JSONP 完全沒有什么值得稱道的。它在大文件和小文件上的表現與其它庫相比都很糟糕。所幸的是,Java 9 很快便會有原生的  JSON 實現了,相信 JSONP 將來的表現仍然值得期待。

感謝各位的閱讀,以上就是“JSON庫的性能比較”的內容了,經過本文的學習后,相信大家對JSON庫的性能比較這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

大悟县| 乳山市| 榆社县| 水富县| 长海县| 桓台县| 双辽市| 托里县| 柳林县| 积石山| 巩义市| 湖南省| 电白县| 二连浩特市| 比如县| 鄂伦春自治旗| 山西省| 黔江区| 镶黄旗| 十堰市| 临汾市| 扬中市| 乐山市| 云龙县| 芦山县| 会宁县| 灵丘县| 常州市| 周口市| 东乡县| 祁东县| 漠河县| 特克斯县| 韩城市| 南充市| 灌云县| 阿拉善盟| 聂拉木县| 津市市| 西和县| 体育|