亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        JSON數(shù)據(jù)傳輸效率研究

        2011-09-07 10:16:42段會川
        計算機工程與設計 2011年7期
        關鍵詞:序列化平均值客戶端

        高 靜, 段會川

        (山東師范大學信息科學與工程學院,山東濟南250014)

        0 引 言

        選擇一種合適的數(shù)據(jù)傳輸格式是Web開發(fā)不可忽視的問題,而數(shù)據(jù)傳輸效率是非常重要的一個指標,因此對不同數(shù)據(jù)傳輸格式的傳輸效率進行研究就顯得尤為重要。目前,已有對XML和FSV格式的數(shù)據(jù)傳輸開銷的研究[1],而JSON序列化機制因易于編碼和便于機器解析而受到越來越多的關注,對JSON的數(shù)據(jù)傳輸開銷仍未有研究。本文將對XML、FSV及JSON從數(shù)據(jù)傳輸開銷、數(shù)據(jù)傳輸時間以及客戶端數(shù)據(jù)反序列化效率3個角度進行比較研究,以求給開發(fā)者選擇數(shù)據(jù)傳輸格式提供有力的參考依據(jù)。

        1 JSON簡介

        JSON作為一種輕量級的數(shù)據(jù)傳輸格式,可以在多種語言之間進行數(shù)據(jù)交換。JSON易于閱讀和編碼,且它是JavaScript規(guī)范的子集,能被支持JavaScript的瀏覽器所解析,相比XML,減少了解析時帶來的性能和兼容性問題,這些特性使JSON成為理想的數(shù)據(jù)交換語言。

        1.1 JSON語法格式

        JSON具有以下主要形式[2-3]:

        (1)對象:是一個無序的“‘名稱/值’對”集合。一個對象以“{”開始,“}”結(jié)束,每個“名稱”后跟一個“:”,“名稱”使用““””括起來“‘名稱/值’”之間使用“,”將其分隔。圖1是JSON創(chuàng)建對象的格式。

        圖1 對象格式

        下面是一個簡單示例:

        var user={"username":"andy","age":"20","sex":"female"}

        這個對象包含了3個元素username;age;sex,它們的值分別是 andy;20;female。

        (2)數(shù)組:是值的有序集合。一個數(shù)組以“[”開始,“]”結(jié)束,值之間使用“,”將其分隔。圖2是JSON創(chuàng)建數(shù)組的格式。

        圖2 數(shù)組格式

        下面是一個簡單示例:

        var user=['lily','tom','sara']

        這個例子表明,在數(shù)組user中包含3個元素‘lily’,‘tom’,‘sara’。

        1.2 JSON序列化與反序列化

        序列化(Serialization)是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的就是反序列化,它將流轉(zhuǎn)換為對象。這兩個過程結(jié)合起來,可以輕松地存儲和傳輸數(shù)據(jù)[4]。

        首先服務器直接生成JavaScript語句,客戶端獲取后直接用eval方法來獲得這個對象。

        var mydate=eval("("+dd+")");

        通過上面這條語句就可以將從服務器獲得的JSON結(jié)果dd,轉(zhuǎn)換為JSON對象mydate。需要注意的是,要在這個字符串兩端套上小括號。然后客戶端通過 JavaScript引擎中的eval()函數(shù)反序列化JSON響應序列,使之運行在客戶的瀏覽器上。

        2 數(shù)據(jù)傳輸開銷計算公式

        數(shù)據(jù)傳輸過程中的開銷主要來源于屬性名稱、標簽及符號。以一個簡單的數(shù)據(jù)表為例,每一列即為一個屬性,如表1所示。

        表1 數(shù)據(jù)表

        RamonLawrence對XML及FSV數(shù)據(jù)傳輸?shù)拈_銷公式[1]已有研究,假設對于任一屬性a,S表示a的最大模式(Schema),D表示a的數(shù)據(jù)值(Data),N表示屬性名稱(Name),E表示屬性值為空(Empty)的部分所占的比例。則FSV數(shù)據(jù)傳輸?shù)拈_銷可表示為(S-D),即最大模式與數(shù)據(jù)值大小之差。

        XML分為無空屬性XML和含空屬性XML兩類。若用XML描述第一條數(shù)據(jù)記錄的Tel屬性,可表示為。對于無空屬性XML,即當屬性值為空時,不創(chuàng)建元素,數(shù)據(jù)傳輸開銷表示為(2*N+5)*(1-E),5表示開關標簽符號(‘<’,‘>’,‘/’)共 5個。對于含空屬性 XML,即屬性值為空,但標簽及屬性名稱仍然保留,若第一條數(shù)據(jù)記錄的Tel屬性值為空,則用XML可表示為,此時相當于E=0,XML數(shù)據(jù)傳輸開銷為2*N+5。

        對于JSON,也分為無空屬性JSON和含空屬性JSON兩類。若用JSON表示第一條數(shù)據(jù)記錄,可表示為 {“No”:“1”,“Sex”:“female”,“Tel”:“123”,“Age”:“10”}。對于每個屬性由于屬性名稱無需成對出現(xiàn),只需一個表示,另外包含符號(‘"’,‘"’,‘:’,‘,’)共 6 個,因此,無空屬性JSON(當屬性值為空時,不創(chuàng)建元素),數(shù)據(jù)傳輸開銷可表示為(N+6)*(1-E)。對于含空屬性JSON(屬性值為空,但標簽仍然保留),若第一條數(shù)據(jù)記錄的 Tel屬性值為空,則可表示為 {“No”:“1”,“Sex”:“female”,“Tel”:“”,“Age”:“10”},即E=0時,JSON數(shù)據(jù)傳輸開銷為N+6。

        經(jīng)過以上分析,得出不同數(shù)據(jù)傳輸格式開銷計算公式如表2所示。

        表2 數(shù)據(jù)傳輸開銷計算公式

        3 實 驗

        3.1 統(tǒng)計數(shù)據(jù)集

        實驗所引用的統(tǒng)計數(shù)據(jù)集[1]如表3所示。這是RamonLawrence由Java程序DBstats通過JDBC連接樣例數(shù)據(jù)庫得來,其中樣例數(shù)據(jù)庫來自MicrosoftAccess的Northwind數(shù)據(jù)庫,以及UCI KDD和ML庫,還有一些互聯(lián)網(wǎng)上的公用數(shù)據(jù)庫。數(shù)據(jù)集分為模式級和數(shù)據(jù)級,取得了數(shù)據(jù)級屬性名稱(N),模式(S)及數(shù)據(jù)值(D)等數(shù)值的大小,所取數(shù)據(jù)均保留兩位有效數(shù)字。其中使用比例(D/S)表示數(shù)據(jù)值占模式大小的比例,未用比例(E)表示屬性值為空的部分所占的比例。

        表3 統(tǒng)計數(shù)據(jù)集

        由表中數(shù)據(jù)可發(fā)現(xiàn),各數(shù)據(jù)庫屬性名稱(N)平均值大約為8,模式大小(S)平均值大約為20,數(shù)據(jù)值(D)平均值大約為7,數(shù)據(jù)值占模式大小的比例(D/S)平均值大約為40%,而屬性值為空的部分所占比例平均值大約為7%,這些數(shù)據(jù)對于分析數(shù)據(jù)傳輸開銷具有重要意義。為更直觀地表示,各樣例數(shù)據(jù)庫屬性名稱(N)、模式(S)及數(shù)據(jù)值(D)用折線圖如圖3所示。

        圖3 樣例數(shù)據(jù)庫屬性名稱、模式、數(shù)據(jù)值比較

        3.2 數(shù)據(jù)傳輸開銷比較

        將上節(jié)中統(tǒng)計數(shù)據(jù)集的數(shù)據(jù)利用表2中各數(shù)據(jù)傳輸格式開銷公式計算,得到不同數(shù)據(jù)傳輸格式開銷,將數(shù)據(jù)進行整理如表4所示(表中數(shù)據(jù)均保留兩位有效數(shù)字)。

        由于各樣例數(shù)據(jù)庫數(shù)據(jù)記錄集較大,實驗數(shù)據(jù)具有較強的精確性,而經(jīng)過對同一數(shù)據(jù)庫數(shù)據(jù)記錄的不同數(shù)據(jù)傳輸格式傳輸,可以得到較為公正的結(jié)果。

        表4中,以Northwind數(shù)據(jù)庫為例,已知N=8.96,S=15.24,D=6.86,則FSV數(shù)據(jù)傳輸開銷為S-D=8.38,含空屬性XML數(shù)據(jù)傳輸開銷為2*N+5=22.92,無空屬性XML數(shù)據(jù)傳輸開銷為(2*N+5)*(1-E)=22.29,含空屬性JSON數(shù)據(jù)傳輸開銷為N+6=14.96,無空屬性JSON數(shù)據(jù)傳輸開銷為(N+6)*(1-E)=14.55。以此類推,得到不同數(shù)據(jù)傳輸格式的開銷。為便于直觀比較,將不同數(shù)據(jù)傳輸格式的開銷以條形圖形式表示如圖4所示。

        表4 不同數(shù)據(jù)傳輸格式開銷量化比較

        圖4 不同數(shù)據(jù)傳輸格式開銷直觀比較

        從以上圖表中可以看出:

        (1)含空屬性JSON的開銷平均值為13.58,無空屬性JSON的開銷平均值為12.61,兩者之間相差0.97,均明顯小于任何一種XML的數(shù)據(jù)傳輸開銷平均值(20.16或18.73)。其中含空屬性JSON比含空屬性XML的開銷小6.58,無空屬性JSON比無空屬性XML的開銷小6.12。這正是JSON簡潔的數(shù)據(jù)描述格式相比XML復雜的格式標簽所帶來的優(yōu)勢。

        (2)FSV格式的開銷平均值為13.83,兩種JSON格式的數(shù)據(jù)傳輸開銷平均值均略低于FSV。

        綜上,JSON的數(shù)據(jù)傳輸開銷是各數(shù)據(jù)傳輸格式中最小的。而數(shù)據(jù)傳輸開銷的減小必然會帶來數(shù)據(jù)傳輸效率的提高。雖然JSON的數(shù)據(jù)傳輸開銷與FSV相差無幾,但值得一提的是,JSON以其簡潔的編碼形式在數(shù)據(jù)描述方面明顯優(yōu)于FSV。因此,JSON相比較XML與FSV,在數(shù)據(jù)傳輸開銷和數(shù)據(jù)描述簡潔性方面均成為一種理想的數(shù)據(jù)傳輸格式。

        3.3 數(shù)據(jù)傳輸效率比較

        為了更好的驗證JSON的數(shù)據(jù)傳輸效率優(yōu)于其他數(shù)據(jù)傳輸格式,我們搭建一個實測環(huán)境,實驗通過對不同數(shù)據(jù)傳輸格式傳輸同一組數(shù)據(jù)庫記錄的時間進行比較,間接地比較了數(shù)據(jù)傳輸效率。由于網(wǎng)絡環(huán)境不穩(wěn)定等原因,實驗數(shù)據(jù)會有一些波動,經(jīng)過10次測試取平均值。實驗結(jié)果如表5所示。

        表5 數(shù)據(jù)傳輸效率比較

        經(jīng)過分析表格中數(shù)據(jù),大體上來看,以JSON格式傳輸數(shù)據(jù)所消耗的時間明顯短于以XML格式傳輸數(shù)據(jù)所消耗的時間,而略短于FSV傳輸數(shù)據(jù)消耗的時間。這是因為JSON生成文件的時候是利用JSON對象,使用Java String直接寫入腳本,而XML則要生成一個doc對象[6],用輸入輸出流的方式寫入XML文件。另外,無空屬性JSON傳輸數(shù)據(jù)所消耗的時間小于無空屬性JSON,無空屬性XML傳輸數(shù)據(jù)所消耗的時間小于含空屬性XML,這是因為當屬性值為空時,省略掉格式的標簽及符號,可以使傳輸負擔減小,這樣傳輸效率就相應提高了,傳輸時間也減短了。數(shù)據(jù)傳輸時間的比較再次證明JSON的數(shù)據(jù)傳輸效率優(yōu)于其他數(shù)據(jù)傳輸格式。

        3.4 客戶端數(shù)據(jù)反序列化效率

        在客戶端,從服務器端傳輸過來JSON或XML的數(shù)據(jù)將被反序列化才能獲取其中的數(shù)據(jù),進而顯示在客戶端頁面上。其中,XML是基于DOM樹結(jié)構(gòu)的,反序列化XML需要考慮父節(jié)點和子節(jié)點,這為反序列化增加了難度。如下是一個典型的XML格式表示:

        而JSON只需要通過JavaScript語言的eval()函數(shù)就可以將JSON數(shù)據(jù)反序列化為JavaScript對象。如下是上述XML示例對應的JSON格式:

        反序列化JSON通常采用如下方法:

        實驗通過一個簡單的測試程序分別對JSON或XML格式數(shù)據(jù)反序列化時間進行了比較分析,進而比較了兩種格式讀取數(shù)據(jù)時的反序列化效率。為消除偶然誤差,重復測驗10次,數(shù)據(jù)反序列化效率分析如圖5所示。

        從圖5中可以看出,JSON反序列化時間明顯小于XML反序列化時間,這是與JSON和XML本身特殊的結(jié)構(gòu)分不開的。采用JSON格式的數(shù)據(jù)大大降低了反序列化時的冗余度,使開發(fā)效率提高。若與AJAX技術相結(jié)合則會使即時頁面更新效果更加顯著,更好地提高用戶體驗。

        4 結(jié)束語

        圖5 XML和JSON數(shù)據(jù)反序列化效率分析

        本文提出了JSON數(shù)據(jù)傳輸開銷計算公式。經(jīng)過對JSON、XML及FSV這3種比較常用的數(shù)據(jù)傳輸格式的開銷、傳輸時間以及客戶端數(shù)據(jù)反序列化效率的量化比較,發(fā)現(xiàn)JSON的數(shù)據(jù)傳輸效率明顯優(yōu)于其他數(shù)據(jù)傳輸格式,這為Web開發(fā)者對數(shù)據(jù)傳輸格式的選擇提供了更有力的參考。同時JSON便于閱讀和編碼,又是JavaScript規(guī)范的子集,便于機器解析,減少了解析XML帶來的性能和兼容性問題,因此,對于需考慮流量和網(wǎng)絡傳輸效率的環(huán)境以及輕量級的應用中,JSON應成為首選的數(shù)據(jù)傳輸格式。比如在移動應用開發(fā)中使用JSON結(jié)合AJAX的模式可以很好的解決移動設備帶寬受限及網(wǎng)絡流量要求較高的問題。

        然而本文還有進一步需要提高的地方,針對數(shù)據(jù)傳輸?shù)木唧w應用JSON的數(shù)據(jù)傳輸效率是否會一直優(yōu)于其他數(shù)據(jù)傳輸格式,這是值得討論的。因此,有必要針對具體的開發(fā)環(huán)境更為詳細地討論JSON等數(shù)據(jù)傳輸格式的優(yōu)缺點,這也正是我們后續(xù)工作的內(nèi)容。

        [1]Ramon Lawrence.The space efficiency of XML[J].Information and Software Technology,2004,46(4):753-759.

        [2]Ali Mesbah,Arie van Deursen.A component-and push-based architectural style for AJAX applications[J].The Journal of Systems and Software,2008,81(12):2194-2209.

        [3]張濤,黃強,毛磊雅,等.一個基于JSON的對象序列化算法[J].計算機工程與應用,2007,43(15):98-100.

        [4]丁波,晁愛農(nóng).基于Struts2框架的AJAX開發(fā)研究[J].計算機工程與設計,2009,30(16):3910-3917.

        [5]黃強,王薇,張曉梅,等.基于JSON和IoC的AJAX-RMI插件[J].計算機工程,2009,35(19):71-74.

        [6]崔璨,倪宏.使用JSON對AJAX技術中的XML性能的優(yōu)化仿真[J].通信技術,2009,42(8):108-114.

        [7]王沛,謝俊元.基于總線模型和Json的AJAX安全開發(fā)模型[J].計算機工程與設計,2008,29(3):586-589.

        [8]胡文發(fā),白中英.基于J2EE/J2ME的JSON數(shù)據(jù)交換的探討[J].電子設計工程,2009,17(12):102-103.

        [9]譚力,楊宗源,謝瑾奎.AJAX技術的數(shù)據(jù)響應優(yōu)化[J].計算機工程,2010,36(7):52-54.

        猜你喜歡
        序列化平均值客戶端
        “平均值代換”法在數(shù)學解題中的應用
        如何建構(gòu)序列化閱讀教學
        甘肅教育(2020年14期)2020-09-11 07:58:36
        縣級臺在突發(fā)事件報道中如何應用手機客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        Java 反序列化漏洞研究
        作文訓練微格化、序列化初探
        語文知識(2015年12期)2015-02-28 22:02:15
        平面圖形中構(gòu)造調(diào)和平均值幾例
        基于電流平均值的改進無功檢測法
        電測與儀表(2014年6期)2014-04-04 11:59:46
        客戶端空間數(shù)據(jù)緩存策略
        美女自卫慰黄网站| 不卡的高清av一区二区三区| 亚洲精品美女久久777777| 狠狠色综合网站久久久久久久 | 好大好湿好硬顶到了好爽视频 | 国产一区二区不卡老阿姨| 女人的天堂av免费看| 精品国产亚洲av久一区二区三区| 成人av片在线观看免费| 亚洲熟女乱色综合亚洲图片| 精品亚洲午夜久久久久| 日本在线一区二区在线| 日韩乱码人妻无码系列中文字幕| 无码av免费一区二区三区试看| 中文字幕不卡高清免费| 久久久精品人妻一区二区三区免费| 免费a级毛片无码免费视频首页| 精品人妻人人做人人爽夜夜爽| 9久9久女女热精品视频免费观看| 一道本加勒比在线观看| 护士的小嫩嫩好紧好爽| 亚洲色偷拍区另类无码专区| 国产对白刺激在线观看| 成年人一区二区三区在线观看视频| 国产精品久久国产精品99| 欧美午夜a级精美理论片| 久久精品国产亚洲av成人无人区| 国99精品无码一区二区三区| 国产精品亚韩精品无码a在线| 91精品国产综合久久青草| 亚洲精品中文字幕不卡| 欧美成人aaa片一区国产精品| 国产成人午夜精品免费视频| 热门精品一区二区三区| 人人妻人人澡人人爽人人精品浪潮 | 国产欧美日本亚洲精品一4区| 亚洲成人激情深爱影院在线| 久久久国产乱子伦精品作者| 伊人久久综在合线亚洲不卡| 五月激情在线观看视频| av无码电影一区二区三区|