Json 已成為當前服務(wù)器與 web 應(yīng)用之間數(shù)據(jù)傳輸?shù)墓J標準。
成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,先為泰來等服務(wù)建站,泰來等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為泰來企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
微服務(wù)及分布式架構(gòu)經(jīng)常會使用 Json 來傳輸此類文件,因為這已經(jīng)是 webAPI 的事實標準。
不過正如許多我們習以為常的事情一樣,你會覺得這是理所當然的便不再深入比較。
我們很少會去想用到的這些 Json 庫到底有什么不同,但事實上它們的確是不太一樣的。
因此,我們團隊來對常用的三個 Json 庫運行測試,看看在解析不同大小文件時哪個庫的速度最快。
在給定的文件大小下,你可以看到不同庫之間的解析速度存在著明顯的差別。
高吞吐量的情況下,會頻繁傳輸解析小文件,因此一開始的時候可能性能的差距并不明顯。
但如果你需要在非常高負載下頻繁地解析大量的小文件,差距就開始增大了。
不是所有的 Json 庫都叫"特侖蘇"。如何根據(jù)使用場景才選擇正確的庫是相當重要的。
回到頂部
選擇三個個主流的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 間進行相互轉(zhuǎn)換。同時它還提供了對Java泛型的完整支持,而且還不需要你在類上面添加注解。無需添加注解使用起來則更為便捷,同時在無法修改源代碼的情況下這還是一個必要的先決條件。
FasterXML 的 Jackson 項目(https://github.com/FasterXML/jackson)。Jackson 是一個數(shù)據(jù)處理的工具套件,它的亮點是流式的 Json 解析器及生成器。它是專為Java設(shè)計的,同時也能處理其它非 Json 的編碼。
回到頂部
我們同時使用大文件和小文件對這些庫進行了基準測試。隨著文件大小的不同,處理這些文本所需要的系統(tǒng)資源也會隨之上升。
這個基準測試主要關(guān)注兩個關(guān)鍵場景:
1.大文件下(190MB)的解析速度與小文件(1KB)下的解析速度。大文件取自這里:https://github.com/zeMirco/sf-city-lots-Json 。
2.小文件是從這里隨機生成的:http://www.Json -generator.com/。
不管是大文件還是小文件,我們都會用同一個庫重復(fù)運行10次。
對于每一個大文件,我們都會用同一個庫來分別運行10 次。
而對于小文件,在單個庫的單次運行中會重復(fù)執(zhí)行10000 次。
在小文件測試的各次迭代中,文件內(nèi)容都不會駐留在內(nèi)存里。
Jackson 與 Json .simple 領(lǐng)跑了這輪測試,整體來看 Jackson 又要略優(yōu)于 Json .simple。
從測試運行的平均結(jié)果來看,Jackson 與 Json .simple 在大文件上的表現(xiàn)要優(yōu)秀。
而 JsonNP 排名第三落后甚遠,Gson 更是遙遙墊底。
上表記錄的是對每個文件解析10次的平均時間,總的平均時間見下方。各個庫在小文件測試中奪冠的次數(shù)如下:
GSON - 14
Json P - 5
Jackson -1
Json .simple - 0
Gson 這個冠軍還是當之無愧的,Json.simple 第二也沒什么懸念。Jackson這輪卻是墊底了。
盡管 Json.simple 沒有在任何文件上奪得第一,但總體來看它的解析速度卻是排名第二位的。
還有一個值得注意的是,盡管 Jackson 是這輪最慢的庫,但是它在所有文件中的表現(xiàn)都非常一致。
其它三個庫雖然偶然會比 Jackson 快很多,但在另一些文件上的解析速度卻是旗鼓相當甚至更差。
回到頂部
解析速度并非衡量一個Json 庫的唯一指標,但它的確非常重要。
通過運行這次基準測試,我們發(fā)現(xiàn)沒有一個庫能在所有文件上擊敗對手。
大文件中表現(xiàn)優(yōu)秀的卻在小文件上栽了根頭,反之亦然。
如果要從解析速度來看選擇哪個庫的話還得取決于你的使用場景。
如果你的應(yīng)用經(jīng)常會處理大的 Json 文件,那么 Jackson 應(yīng)該是你的菜。Gson 在大文件上表現(xiàn)得相當吃力。
如果你主要是處理小文件請求,比如某個微服務(wù)或者分布式架構(gòu)的初始化,那么 Gson 當是首選。Jackson 在小文件上的表現(xiàn)則不如人意。
如果這兩種文件你都經(jīng)常會處理到,那么在兩輪表現(xiàn)中都位居第二的 Json.simple 對此類場景則更為適合。
分享名稱:開源JSON庫解析性能對比(Jackson/Json.simple/Gson)
分享網(wǎng)址:http://aaarwkj.com/article34/pjsdpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、靜態(tài)網(wǎng)站、全網(wǎng)營銷推廣、小程序開發(fā)、做網(wǎng)站、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)