我創建了性能基準測試:XMLReader vs DOMDocument
XMLReader.php:
$script_starttime = microtime(true);
libxml_use_internal_errors(true);
$xml = new XMLReader;
$xml->open($_FILES["file"]["tmp_name"]);
$xml->setSchema($xmlschema);
while (@$xml->read()) {};
if (count(libxml_get_errors())==0) {
echo 'good';
} else {
echo 'error';
}
echo '<br><br>Time: ',(microtime(true) - $script_starttime)*1000," ms, Memory: ".memory_get_usage()." bytes";
DOMDocument.php:
$script_starttime = microtime(true);
libxml_use_internal_errors(true);
$xml = new DOMDocument();
$xmlfile = $_FILES["file"]["tmp_name"];
$xml->load($xmlfile);
if ($xml->schemaValidate($xmlschema)) {
echo 'good';
} else {
echo 'error';
}
echo '<br><br>Time: ',(microtime(true) - $script_starttime)*1000," ms, Memory: ".memory_get_usage()." bytes";
我的實施例:18 MB XML與258.230線
結果:
的XMLReader - 656.14199638367毫秒,379064個字節
DOM文檔 - 483.04295539856毫秒,369280個字節
所以我決定去與DOM文檔,只是用自己的XML和XSD嘗試並使用你的更快的選擇。
我無法使用DOM,因爲我的XML文件很大,DOM無法處理。 – BentCoder 2012-07-30 11:50:19
@DaveRandom DOM功能強大,但該功能需要花費。這兩種工具都有完全不同的用例,並且以各自的方式強大。與XMLReader相比,dom非常昂貴。 DOM會將整個文檔加載到內存中。 XMLReader使您能夠更高效地讀取文檔,並且可以在需要時將單個節點加載到dom中。您將能夠獲得更好的性能並節省(可能性很大)的資源。對於處理較小XML文件的應用程序也是如此。 「正確的」選擇取決於要求。兩者都不是「更好」。 – 2015-05-28 00:30:21