崔嘉怡,匡 鵬,邵 飛,石靈丹
(1. 中南財(cái)經(jīng)政法大學(xué),武漢 430073;2. 武漢長海高新技術(shù)有限公司,武漢 430000)
電池包測試系統(tǒng)作為新能源測試行業(yè)中重要的質(zhì)量檢測系統(tǒng),在過去幾十年取得了顯著的發(fā)展。多項(xiàng)研究工程致力于提升電池包測試系統(tǒng)的準(zhǔn)確性、穩(wěn)定性和效率。同時(shí),隨著人工智能技術(shù)的發(fā)展,船電技術(shù)的控制系統(tǒng)需要探索如何利用Web 應(yīng)用學(xué)習(xí)算法來優(yōu)化電池包測試系統(tǒng)的性能,從而更好地滿足新能源測試行業(yè)的需求[1,2]。
在數(shù)據(jù)轉(zhuǎn)換算法的研究現(xiàn)狀中,XML 和JSON 是兩種常用的數(shù)據(jù)交換格式。由于它們的數(shù)據(jù)結(jié)構(gòu)和語法有所不同,將XML 轉(zhuǎn)換為JSON或?qū)SON 轉(zhuǎn)換為XML 是一個(gè)具有挑戰(zhàn)性的任務(wù)[3]。常見的數(shù)據(jù)轉(zhuǎn)換方法是基于模式匹配和遞歸算法。在文獻(xiàn)[4]中基本思想是通過解析XML或JSON 的數(shù)據(jù)結(jié)構(gòu),然后根據(jù)預(yù)定義的轉(zhuǎn)換規(guī)則,將其轉(zhuǎn)換為另一種格式。另外,文獻(xiàn)[5]跟文獻(xiàn)[6]中一些研究致力于解決數(shù)據(jù)結(jié)構(gòu)不一致性的問題。大多研究都是圍繞定義數(shù)據(jù)、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)重構(gòu)以實(shí)現(xiàn)數(shù)據(jù)交換目的進(jìn)行的如文獻(xiàn)[7]。還有一些研究如文獻(xiàn)[8]探索了利用中間形式進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
而在實(shí)際電池包測試系統(tǒng)中,XML 和JSON的數(shù)據(jù)結(jié)構(gòu)可能會因?yàn)椴煌臄?shù)據(jù)源或數(shù)據(jù)格式而存在差異,例如元素不一致、嵌套層次變化等。為了實(shí)現(xiàn)準(zhǔn)確、高效的數(shù)據(jù)轉(zhuǎn)換,我們提出了一些智能匹配方法和自動對齊技術(shù)。這些方法和技術(shù)可以自動識別數(shù)據(jù)結(jié)構(gòu)的不一致性,并進(jìn)行相應(yīng)的調(diào)整和映射,從而確保轉(zhuǎn)換后的數(shù)據(jù)準(zhǔn)確無誤。
JSON 作為輕量級數(shù)據(jù)交換格式,在文獻(xiàn)[9]中所述,JSON 采用鍵值對表示數(shù)據(jù),常用于Web應(yīng)用程序和服務(wù)端間數(shù)據(jù)傳輸。鍵值對間用冒號分隔,鍵為字符串。在文獻(xiàn)[10]中,數(shù)據(jù)可以為對象或數(shù)組。值可以是字符串、數(shù)字、布爾值、對象、數(shù)組或null。以下是系統(tǒng)可識別的json 序列示例圖:
圖1 EOL 系統(tǒng)可識別的json 序列示例
XML 是一種可擴(kuò)展標(biāo)記語言,由元素和屬性構(gòu)成,構(gòu)建非限定秩的結(jié)點(diǎn)樹。XML 文檔可視為由元素類型集合(E)、屬性名集合(A)和結(jié)點(diǎn)值集合(Str)構(gòu)成的樹(T)。由文獻(xiàn)[10]得,元素類型集合(E)包含所有可能元素類型,樹T的屬性名集合(A)包含所有屬性名,結(jié)點(diǎn)值集合(Str)包含所有結(jié)點(diǎn)值。屬性名以@開頭,與元素類型區(qū)分。XML 樹T 定義為:(N,,,root),其中N 是結(jié)點(diǎn)集合(元素和屬性),為父子關(guān)系,為兄弟關(guān)系,root 為根結(jié)點(diǎn),另外元素類型函數(shù):N -> E(如果λ(v)=e,我們說e 是v 的元素類型);屬性函數(shù):N->Str,N 中的任何一個(gè)屬性結(jié)點(diǎn),其值在Str 中,N 中沒有子結(jié)點(diǎn)的結(jié)點(diǎn)為葉結(jié)點(diǎn);任何一個(gè)結(jié)點(diǎn)和其所有后帶結(jié)點(diǎn)組成的樹,我們稱為子樹,為此子樹的根結(jié)點(diǎn);以下是系統(tǒng)可識別轉(zhuǎn)換后的XML 片段示例圖:
圖2 系統(tǒng)可識別轉(zhuǎn)換后的XML 片段示例
XML 文檔的DTD 可用如下三元組來定義(P,R,r),其中:P 是從元素類型到子元素正則表達(dá)式的映射,此映射描述父結(jié)點(diǎn)與子結(jié)點(diǎn)的關(guān)系,表達(dá)式基于元素類型,語法如下:μ:=?|e,e ∈E|μ|μ|μ,μ| μ*。其中? 代表空,μ|μ和μ,μ分別代表合并與連接,μ*代表任意多個(gè)相同元素的連接。以下是XML 片段的DTD 示例與DTD 所表示的樹型圖:
圖3 DTD 所表示的樹型圖
在轉(zhuǎn)換電池包測試系統(tǒng)的.sol 文件(XML 格式)為JSON 時(shí),需要考慮兩者結(jié)構(gòu)差異。首先,將.sol 文件(XML 格式)轉(zhuǎn)換為JSON,使得應(yīng)用能夠使用拖拽式方案編輯器所需的JSON。上位機(jī)可以通過該JSON 反向生成XML。轉(zhuǎn)換過程步驟:①解析.sol 文件:使用XML 解析庫解析.sol文件中的XML 數(shù)據(jù),將其轉(zhuǎn)換為適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)。②創(chuàng)建JSON 對象:根據(jù)解析結(jié)果,創(chuàng)建對應(yīng)的JSON,定義其結(jié)構(gòu)和鍵值對。③遍歷XML并生成JSON:遍歷后的XML 數(shù)據(jù),將XML 元素轉(zhuǎn)換為對應(yīng)的JSON 對象,并將其添加到JSON適當(dāng)位置。④設(shè)置JSON 鍵值對:根據(jù).sol 文件中的XML 元素和屬性,設(shè)置JSON 的鍵值對。⑤輸出JSON:將生成的JSON 對象輸出為JSON格式的文件,完成.sol 文件到JSON 的轉(zhuǎn)換過程。
圖4 存在DTD 的XML 格式的.sol 數(shù)據(jù)轉(zhuǎn)換為JSON
多格式數(shù)據(jù)轉(zhuǎn)換在方案編輯器中扮演關(guān)鍵角色,確保電池包下線測試系統(tǒng)生成的.sol 文件與Web 方案編輯器所需的JSON、XML 等格式之間能夠相互轉(zhuǎn)換。以下將探討數(shù)據(jù)轉(zhuǎn)換的算法和實(shí)現(xiàn)細(xì)節(jié),并介紹處理不同格式轉(zhuǎn)換的方法及其優(yōu)劣和準(zhǔn)確性。在Web 應(yīng)用中,關(guān)鍵在于設(shè)計(jì)實(shí)現(xiàn)準(zhǔn)確轉(zhuǎn)換的算法,以下將比較不同方法的優(yōu)劣和適用性,主要方法包括:df.to_xml 庫函數(shù)、dict_to_xml 方法和JSON2XMLConverter 函數(shù)。
1)使用df.to_xml 進(jìn)行JSON 到XML:使用df.to_xml 方法將JSON 數(shù)據(jù)轉(zhuǎn)換為DataFrame 格式,然后通過DataFrame 對象的to_xml 方法將其轉(zhuǎn)換為XML 格式字符串。
2)基本原理:①轉(zhuǎn)換為DataFrame 格式:首先,將JSON 數(shù)據(jù)轉(zhuǎn)換為DataFrame 格式,再將JSON 數(shù)據(jù)轉(zhuǎn)為DataFrame 并賦值給變量df。②to_xml 方法:使用DataFrame 的to_xml 方法將DataFrame 轉(zhuǎn)換為XML 格式的字符串。③生成字符串:變量xml_str 保存轉(zhuǎn)換得到的XML 格式的字符串,該字符串表現(xiàn)與原始JSON 相對應(yīng)的XML 結(jié)構(gòu)。
1)使用dict_to_xml 進(jìn)行JSON 到XML:dict_to_xml 是一種用于將Python 字典數(shù)據(jù)轉(zhuǎn)換為XML 格式字符串的方法。其原理是遞歸將字典中的鍵值對轉(zhuǎn)換為對應(yīng)XML 元素和屬性。
2)基本原理:①遞歸遍歷字典:dict_to_xml()會逐層遍歷字典中的所有鍵值對。對于每個(gè)鍵值對,根據(jù)鍵的類型決定生成XML 元素或?qū)傩浴"趧?chuàng)建XML 元素:每個(gè)鍵被轉(zhuǎn)換為一個(gè)XML 元素,鍵名成為XML 元素的標(biāo)簽,相關(guān)的值成為元素的內(nèi)容。③屬性處理:若值為字典,將被視為XML 元素,并根據(jù)其中的鍵值對創(chuàng)建子元素。列表中的每個(gè)元素都會創(chuàng)建一個(gè)子元素。對于基本類型(如整數(shù)、字符串、布爾值)的鍵值對,會將其作為元素的文本內(nèi)容。
1)使用JSON2XMLConverter 進(jìn)行JSON 到XML:自研開發(fā)的JSON2XMLConverter 函數(shù)是一種根據(jù)EOL 測試系統(tǒng)對XML 格式的特定要求編寫的JSON 轉(zhuǎn)XML 轉(zhuǎn)換算法。該算法基于遞歸和條件判斷的編程概念,以滿足WEB 端所需的XML 格式。
2)基本原理:①遞歸遍歷:JSON2XMLConver ter 函數(shù)通過遞歸遍歷字典中的鍵值對,處理嵌套結(jié)構(gòu),如字典中包含字典或列表。遞歸遍歷是將整個(gè)字典結(jié)構(gòu)轉(zhuǎn)換為相應(yīng)XML 元素結(jié)構(gòu)的關(guān)鍵。圖6 展示了經(jīng)過自制XML 轉(zhuǎn)換函數(shù)遍歷解析后的樹形結(jié)構(gòu),以生成EOL 系統(tǒng)可識別的XML 片段示例。②條件判斷:在遍歷過程中,JSON2X MLConverter 函數(shù)根據(jù)鍵值對的類型和格式進(jìn)行條件判斷。根據(jù)鍵的類型,它決定生成XML 元素或?qū)傩?;根?jù)值的類型,它決定創(chuàng)建子元素或文本內(nèi)容。這些條件判斷確保生成的XML 與原始數(shù)據(jù)結(jié)構(gòu)一致。
圖5 JSON 轉(zhuǎn)XML 遍歷解析后的樹型結(jié)構(gòu)圖
為了比較三種JSON 轉(zhuǎn)XML 的數(shù)據(jù)轉(zhuǎn)換方法在不同數(shù)據(jù)集上的性能,我們設(shè)計(jì)了兩組數(shù)據(jù)集:人工截取數(shù)據(jù)集(Short_file)和由EOL 測試系統(tǒng)生成的數(shù)據(jù)集(Long_file)其覆蓋不同復(fù)雜程度和規(guī)模的數(shù)據(jù),以全面評估性能。數(shù)據(jù)集大小按10 的倍數(shù)從10 逐步增加到100,用于評估模型性能。
手動創(chuàng)建的數(shù)據(jù)集,包含整數(shù)、浮點(diǎn)數(shù)、字符串、嵌套結(jié)構(gòu)和數(shù)組等數(shù)據(jù)操作類型,模擬常見操作步驟如BTS、HIPOT、BTD、繼電器操作等生成JSON 數(shù)據(jù)。用于評估在常見場景下的性能。
由電池包測試系統(tǒng)生成真實(shí)數(shù)據(jù)集,包含復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和邊界條件,全面評估數(shù)據(jù)轉(zhuǎn)換和上位機(jī)設(shè)置的邊界條件生成的JSON。用于評估在大數(shù)據(jù)集下的性能。
為比較三種數(shù)據(jù)轉(zhuǎn)換方法的準(zhǔn)確率和性能,設(shè)計(jì)對比實(shí)驗(yàn)包括:1.準(zhǔn)確率比較:將三種方法的轉(zhuǎn)換后數(shù)據(jù)與原始數(shù)據(jù)進(jìn)行匹配,計(jì)算準(zhǔn)確率。準(zhǔn)確率表示轉(zhuǎn)換后數(shù)據(jù)與原始數(shù)據(jù)完全匹配的比例,是衡量數(shù)據(jù)轉(zhuǎn)換準(zhǔn)確性的指標(biāo)。2.運(yùn)行性能比較:比較三種方法的轉(zhuǎn)換時(shí)間(Conversion Time)、格式化XML 時(shí)間(Format Time)和總運(yùn)行時(shí)間(Total Running Time)。通過計(jì)時(shí)比較方法的性能,多次實(shí)驗(yàn)取平均值提高可靠性.
實(shí)驗(yàn)設(shè)計(jì)如下:①讀取人工截取數(shù)據(jù)集( Short_file ) 和測試系統(tǒng)生成的數(shù)據(jù)集(Long_file)的JSON 數(shù)據(jù)。②使用三種數(shù)據(jù)轉(zhuǎn)換方法將JSON 數(shù)據(jù)轉(zhuǎn)換為XML,并記錄轉(zhuǎn)換時(shí)間。③對轉(zhuǎn)換后的XML 數(shù)據(jù)進(jìn)行格式整理,并記錄格式整理時(shí)間。④計(jì)算轉(zhuǎn)換準(zhǔn)確率,得出每種數(shù)據(jù)轉(zhuǎn)換方法在不同數(shù)據(jù)集上的準(zhǔn)確率。⑤比較不同數(shù)據(jù)轉(zhuǎn)換方法的性能,得出數(shù)據(jù)轉(zhuǎn)換方法在不同數(shù)據(jù)集上的轉(zhuǎn)換時(shí)間、格式整理時(shí)間和總運(yùn)行時(shí)間。
通過上述實(shí)驗(yàn)設(shè)計(jì),我們可以全面比較JSON轉(zhuǎn)化為XML 的三種數(shù)據(jù)轉(zhuǎn)換方法在不同數(shù)據(jù)集上的準(zhǔn)確率和性能表現(xiàn),為選擇最合適的數(shù)據(jù)轉(zhuǎn)換方法提供科學(xué)依據(jù)。
在準(zhǔn)確率對比評估中展示了使用三種方法進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí)的準(zhǔn)確率對比。圖中有兩條曲線,一條表示 Short_file 的準(zhǔn)確率,另一條表示Long_file 的準(zhǔn)確率。其中,X 軸表示文件大小(Number of Files),Y 軸表示準(zhǔn)確率(Accuracy)。
在圖6 中展示了使用df.to_xml 進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí)的準(zhǔn)確率對比。在Short_file 準(zhǔn)確率曲線中:隨著文件大小的增加,準(zhǔn)確率從0.444 45 逐漸下降至約0.430 23。在文件大小為20 左右時(shí),準(zhǔn)確率下降幅度較大,之后變化較為平緩。在Long_file準(zhǔn)確率曲線:隨著文件大小的增加,準(zhǔn)確率從0.294 45 逐漸下降至約0.287 94。在文件大小為20 左右時(shí),準(zhǔn)確率下降幅度較大,之后變化較為平緩。大小數(shù)據(jù)集整體趨勢均是準(zhǔn)確率隨文件大小增加而略微下降。
圖6 df.to_xml 方法-準(zhǔn)確率評估
在圖7中展示了使用dict_to_xml進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí)的準(zhǔn)確率對比。在Short_file準(zhǔn)確率曲線(藍(lán)色)中:隨著文件大小的增加,準(zhǔn)確率從0.920 63逐漸下降至約0.903 05。在文件大小為20左右時(shí),準(zhǔn)確率下降幅度較大,之后變化較為平緩。在Long_file準(zhǔn)確率曲線(橙色)中:隨著文件大小的增加,準(zhǔn)確率從0.818 19逐漸下降至約0.800 04。在文件大小為20左右時(shí),準(zhǔn)確率下降較明顯,之后變化較為平緩。
圖7 dict_to_xml 方法-準(zhǔn)確率評估
在圖8 中展示了使JSON2XMLConverter 函數(shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí)的準(zhǔn)確率對比。在Short_file準(zhǔn)確率曲線中:隨著文件大小的增加,準(zhǔn)確率從0.984 12 逐漸下降至約0.983 29。整體上,準(zhǔn)確率保持在較高水平。在Long_file 準(zhǔn)確率曲線中:隨著文件大小的增加,準(zhǔn)確率從0.636 34 逐漸上升至約0.632 07。整體上,準(zhǔn)確率保持在較低水平。兩組數(shù)據(jù)的準(zhǔn)確率曲線趨勢截然不同。JSON2XMLConverter 函數(shù)在處理較小的文件時(shí)表現(xiàn)良好,準(zhǔn)確率較高;但在處理較大文件時(shí)準(zhǔn)確率有所下降。
圖8 JSON2XMLConverter 函數(shù)-準(zhǔn)確率評估
在準(zhǔn)確率評估中,對比了三種不同的JSON轉(zhuǎn)XML方法在兩種不同大小的數(shù)據(jù)集上的準(zhǔn)確率。其中,自制的JSON轉(zhuǎn)XML函數(shù)(JSON2XML Converter)在Short_file上表現(xiàn)出較為顯著的優(yōu)勢,其準(zhǔn)確率達(dá)到了0.988 12。相比之下,df.to_xml在同一數(shù)據(jù)集上的準(zhǔn)確率較低,僅為0.434 55,而dict_to_xml方法的準(zhǔn)確率為0.805 17。在Long_file上,dict_to_xml表現(xiàn)出相對較高的準(zhǔn)確率,為0.805 17,略高于自制函數(shù)。然而,df.to_xml在這個(gè)數(shù)據(jù)集上的準(zhǔn)確率僅為0.284 90,表現(xiàn)較為不理想。
4.2.1 df.to_xml 庫函數(shù)
在圖9 中是df.to_xml 轉(zhuǎn)化時(shí)間與格式化時(shí)間對比結(jié)果,由實(shí)線可得,隨著數(shù)據(jù)量大小的增加,數(shù)據(jù)轉(zhuǎn)換時(shí)間也呈現(xiàn)明顯的增加趨勢,Long_file較于Short_file 的時(shí)間略多一點(diǎn),兩條線的垂直距離并不大,有輕微增長趨勢。而虛線中,Long_file 較于Short_file 的格式化時(shí)間出現(xiàn)明顯差距,并呈現(xiàn)增加趨勢。并整體可以看到轉(zhuǎn)換時(shí)間與格式化時(shí)間合體差距對比尤為顯著。
圖9 df.to_xml-轉(zhuǎn)化時(shí)間與格式化時(shí)間對比
圖10 中顯示了不同長度數(shù)據(jù)集的運(yùn)行時(shí)間的對比,其所顯示了隨著數(shù)據(jù)集大小的增加,df.to_xml 方法的數(shù)據(jù)轉(zhuǎn)換時(shí)間呈現(xiàn)出明顯的增長趨勢,這表明對于較大的數(shù)據(jù)集,該方法可能不夠高效。在實(shí)際應(yīng)用中,我們需要根據(jù)具體的數(shù)據(jù)規(guī)模和性能需求來選擇合適的數(shù)據(jù)轉(zhuǎn)換方法。如果需要處理大規(guī)模復(fù)雜數(shù)據(jù)集,可能需要考慮使用其他更高效的數(shù)據(jù)轉(zhuǎn)換方法,或者優(yōu)化算法以提高數(shù)據(jù)轉(zhuǎn)換性能。
圖10 df.to_xml-轉(zhuǎn)化時(shí)間與格式化時(shí)間對比
4.2.2 dict_to_xml 方法
在圖11 是dict_to_xml 的處理時(shí)間結(jié)果。在處理轉(zhuǎn)換時(shí)間時(shí),Long_file 較于Short_file 的轉(zhuǎn)換時(shí)間相對較長,說明該方法較大規(guī)模的數(shù)據(jù)集時(shí)需要更多的時(shí)間來完成數(shù)據(jù)轉(zhuǎn)換。在處理運(yùn)行時(shí)間中,Short_file 與Long_file 均隨著數(shù)據(jù)集大小的增加,格式化時(shí)間呈現(xiàn)明顯的上升趨勢。而且格式化時(shí)間Long_file 相對于Short_file 更長,這表明dict_to_xml 方法在處理較大規(guī)模的數(shù)據(jù)集時(shí)需要更多的時(shí)間來完成XML 格式的整理。并整體顯示了dict_to_xml 均在較大數(shù)據(jù)集上需要較長的轉(zhuǎn)換時(shí)間和格式化時(shí)間,且隨著數(shù)據(jù)集大小的增加,這些時(shí)間呈現(xiàn)明顯的增長趨勢。
圖11 dict_to_xml 轉(zhuǎn)化時(shí)間與格式化時(shí)間對比
在圖12 中顯示了dict_to_xml 總運(yùn)行時(shí)間的增長趨勢與轉(zhuǎn)換時(shí)間和格式化時(shí)間類似。隨著文件數(shù)量的增加,總運(yùn)行時(shí)間在兩個(gè)數(shù)據(jù)集上都逐漸增加,并且Long_file 的總運(yùn)行時(shí)間顯著大于Short_file 的總運(yùn)行時(shí)間。因此,Dict_to_xml 在處理較大規(guī)模數(shù)據(jù)時(shí),無論是格式化時(shí)間、轉(zhuǎn)換時(shí)間還是總運(yùn)行時(shí)間,都較Short_file 耗時(shí)更多。
圖12 dict_to_xml-轉(zhuǎn)化時(shí)間與格式化時(shí)間對比
圖13 JSON2XMLConverter-總運(yùn)行時(shí)間
4.2.3 JSON2XMLConverter 函數(shù)
對于JSON 到XML 的轉(zhuǎn)換任務(wù),JSON2XML Converter 函數(shù)在處理不同規(guī)模的數(shù)據(jù)集上都表現(xiàn)良好,總運(yùn)行時(shí)間較為可控。在JSON2XML Converter 函數(shù)中,把格式化跟轉(zhuǎn)換的時(shí)間合二為一,這樣優(yōu)化運(yùn)行的步驟,更是優(yōu)化了算法的空間復(fù)雜度。所以在圖 13 中只有 Long_file 和Short_file 的總運(yùn)行時(shí)間。圖中折線圖分別表示Short_file 和Long_file 在不同文件數(shù)量下的總運(yùn)行時(shí)間??梢杂^察到,隨著文件數(shù)量的增加,總運(yùn)行時(shí)間在兩個(gè)數(shù)據(jù)集上都呈現(xiàn)逐漸增加的趨勢。同時(shí),Long_file 的總運(yùn)行時(shí)間稍高于Short_file,但兩者的差異并不明顯。因此,對于JSON 到XML的轉(zhuǎn)換任務(wù),JSON2XML Converter 函數(shù)在處理不同規(guī)模的數(shù)據(jù)集上都表現(xiàn)良好,總運(yùn)行時(shí)間滿足測試的要求。
在柱狀圖14 中顯示了JSON2XMLConverter函數(shù)在Short_file 和Long_file 數(shù)據(jù)集上的總運(yùn)行時(shí)間對比。隨著文件數(shù)量的增加,JSON2XML Converter 函數(shù)在兩個(gè)數(shù)據(jù)集上的總運(yùn)行時(shí)間都呈現(xiàn)逐漸增加的趨勢。增長速率較為穩(wěn)定,沒有出現(xiàn)明顯的異?;蛲蛔儭SON2XMLConverter函數(shù)在處理較大規(guī)模的數(shù)據(jù)集時(shí),總運(yùn)行時(shí)間有所增加,但仍然表現(xiàn)較好。JSON2XMLConverter函數(shù)在處理不同規(guī)模的數(shù)據(jù)集時(shí),總運(yùn)行時(shí)間逐漸增加,但仍保持較好的運(yùn)行性能。
圖14 JSON2XMLConverter-總運(yùn)行時(shí)間
通過對三種不同的 JSON 轉(zhuǎn) XML 方法(df.to_xml、dict_to_xml、JSON2XMLConverter函數(shù))在不同大小的數(shù)據(jù)集上進(jìn)行準(zhǔn)確率和運(yùn)行性能對比評估,我們可以得出以下結(jié)論:
1)準(zhǔn)確率對比評估:①df.to_xml 方法:在準(zhǔn)確率評估中,df.to_xml 表現(xiàn)較為一般,無論在Short_file 還是Long_file 上,準(zhǔn)確率都較低,尤其是 Long_file 上的準(zhǔn)確率較為不理想。②dict_to_xml 方法:dict_to_xml 在處理Short_file上表現(xiàn)較好,但在Long_file 上準(zhǔn)確率下降較明顯,相比之下,其在Short_file 上的準(zhǔn)確率較高。③JSON2XMLConverter 函數(shù):JSON2XMLConverter函數(shù)在處理Short_file 上表現(xiàn)優(yōu)異,準(zhǔn)確率較高且較為穩(wěn)定;但在Long_file 數(shù)據(jù)集上,準(zhǔn)確率略低,表現(xiàn)不如處理Short_file 數(shù)據(jù)集。
2)運(yùn)行性能對比評估:①df.to_xml 方法:df.to_xml 方法在處理較大規(guī)模的數(shù)據(jù)集時(shí),總運(yùn)行時(shí)間明顯增加,表現(xiàn)一般。處理轉(zhuǎn)換時(shí)間和格式化時(shí)間時(shí),隨著文件數(shù)量的增加,轉(zhuǎn)換時(shí)間和格式化時(shí)間均呈現(xiàn)明顯增長趨勢。②dict_to_xml方法:dict_to_xml 在處理較大規(guī)模的數(shù)據(jù)集時(shí),轉(zhuǎn)換時(shí)間和格式化時(shí)間較長,總運(yùn)行時(shí)間隨著文件數(shù)量的增加而增加。較df.to_xml 方法,在處理較大規(guī)模數(shù)據(jù)集時(shí),dict_to_xml 方法總運(yùn)行時(shí)間略優(yōu)。③JSON2XMLConverter 函數(shù):JSON2XML Converter 在處理不同規(guī)模的數(shù)據(jù)集時(shí),總運(yùn)行時(shí)間逐漸增加,但表現(xiàn)較好。其綜合性能相對穩(wěn)定,在處理較大規(guī)模數(shù)據(jù)集時(shí)表現(xiàn)尤為優(yōu)異.
綜合分析,JSON2XMLConverter 函數(shù)在短數(shù)據(jù)集上表現(xiàn)優(yōu)異,準(zhǔn)確率較高且總運(yùn)行時(shí)間較短;而在長數(shù)據(jù)集上準(zhǔn)確率略有下降,但總體運(yùn)行時(shí)間仍然基本滿足測試要求。dict_to_xml 方法在處理較大數(shù)據(jù)集時(shí)準(zhǔn)確率較高,總運(yùn)行時(shí)間相對較長,但在處理短數(shù)據(jù)集時(shí)表現(xiàn)較好。df.to_xml 方法整體表現(xiàn)較一般,在處理較大規(guī)模數(shù)據(jù)集時(shí)總運(yùn)行時(shí)間較長,準(zhǔn)確率也較低。
根據(jù)不同的數(shù)據(jù)規(guī)模和性能需求,選擇合適的JSON 轉(zhuǎn)XML 方法是至關(guān)重要的。若處理較小規(guī)模的數(shù)據(jù)集且需要高準(zhǔn)確率和較短的總運(yùn)行時(shí)間,可以選擇JSON2XMLConverter 函數(shù);若處理較大規(guī)模的數(shù)據(jù)集,可以考慮使用dict_to_xml 方法;其優(yōu)秀的性能表現(xiàn)證明了JSON2XMLConverter 函數(shù)與dict_to_xml 方法在處理JSON 到XML 數(shù)據(jù)轉(zhuǎn)換任務(wù)上的可靠性和有效性,可為測試系統(tǒng)下的方案編輯器提供更優(yōu)化的轉(zhuǎn)換算法方案。而庫函數(shù)df.to_xml 在處理數(shù)據(jù)集時(shí)無論大小性能較差,不太推薦在系統(tǒng)場景下使用。
用戶可以在系統(tǒng)中通過方案的大小來評估選擇不同的轉(zhuǎn)換方法來找到有效的解決方案。但本文實(shí)驗(yàn)結(jié)果受到數(shù)據(jù)集規(guī)模、硬件設(shè)備、編程語言、算法實(shí)現(xiàn)等因素的影響。因此,不同的應(yīng)用場景和需求可能需要繼續(xù)根據(jù)具體情況來選擇最適合的數(shù)據(jù)轉(zhuǎn)換方法。