首頁  >  文章  >  後端開發  >  如何得到XML文件大小的詳細介紹

如何得到XML文件大小的詳細介紹

黄舟
黄舟原創
2017-03-03 17:07:211723瀏覽

xml文件從格式到大小都是不是確定的。有的可能只有幾行,而有的卻有好幾兆位元組。你也許會懷疑是不是需要了解XML文件的大小。而當效能成為首要問題時,知道XML文件大小就是件必須要做的事情了。

 
從效能角度講,有兩類處理XML文件的方法。批次處理方式需要較短的時間,解析成群組的文件。即時方式就是即時的處理文件。批次方式的效能可以透過在一定時間內處理多少文件來測量,而即時模式的效能也採用類似的測量方式,不過是以處理一個文件需要多長時間來計算的。


Scenarios場景
想像一下,你有一個即時工作的系統,例如一個Web伺服器。這個系統需要即時的接收客戶發送的訂單,並且需要立即回應這個訂單。

這個系統顯然不能用批次處理的方式來進行。簡單的估計一下,假設這是一個很簡單的訂單,只有十個項目,這樣所產生的XML文檔就比較小,大概每個文檔是4KB。在這種情況下,使用DOM來解析收到文件。

如果你的訂單每小時只有幾個,那麼系統效能對你來說還不是問題。但長遠考慮,總有一天訂單的數量會多到令你意識到系統效能必須提高。

現在你開始考慮提高效能來適應成長的負荷。你的訂單文檔已經很小了,把它們合併成較大的文檔也沒有什麼實際的意義。從縱向考慮,這時候你可以提高現有系統處理能力;從橫向考慮,你可以增加更多的系統將負載分散開。

再看看另一個完全不同的領域,你現在要處理的是一個大型的資料倉儲。和Web伺服器完全不同,你現在用FTP來傳輸平均大小為300MB的XML文件。如果還是使用DOM來解析XML文檔,你很快就會遇到大麻煩。相反,如果你使用SAX就會好的多,它可以直接解析流入的XML文檔,而不必把它們事先都裝入內存。


改變文件尺寸
有時候你會遇到特殊情況需要改變XML文件大小。想像一下,跟剛才一樣你有一個即時處理XML文件的Web伺服器,而此時所有的文件大小都是400MB而不是4KB,你不能使用DOM方式,因為那太佔記憶體了。可是因為這是個即時系統,效能很重要。你可以使用SAX,不過需要時間允許並且要有強大的處理器。

在這種情況下,你可以透過改變文件大小來改進系統執行效能。例如你可以將一個400MB的文檔分成10個40MB的,或是40個10MB的小文檔,這比起處理一個400MB的文檔更有效率。這樣你就可以使用DOM方式把文件讀入記憶體處理,及時回應每個文件的請求了。同時也可以清除掉不相關的文件。

在批次處理方式上也有類似情況。想像一下你在透過DOM的批次方式處理數千個4KB大小的文件。最好的方式是將一千個檔案合併成一個4MB的檔案。因為每個文件的載入都需要佔用系統時間(不論是DOM還是SAX)。透過將一千個文檔合併成一個,你只需要載入一個文檔,佔用的時間只是原來的千分之一。


 以上就是如何得到XML文件大小的詳細介紹的內容,更多相關內容請關注PHP中文網(www.php.cn)!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn