![](/img/trans.png)
[英]Speed up parsing XML documents with DOMDocument class in PHP and with namespaces
[英]XML parsing speed up. PHP
我在這里問一些可以使此過程更快的概念:
foreach($xml->results->concepts->concept as $value2){//This is the original game.
$total_concepts++;
foreach($xml1->results->concepts->concept as $value1){//This is similar game.
$total_similar_concepts++;
if(strcmp($value2->name, $value1->name)==0){
$comparisons++;
break;
}
}
}
本質上,我正在將原始游戲的每個“概念”與每個“相似”游戲的每個“概念”進行比較。
該算法平均大約需要11.6秒才能完成。 我可以做些什么使它運行得更快嗎? 我在想,也許將其解析為xml並不是我能做的最好的事情。
XML解析不太可能是造成問題的原因。 如果它與XML有關,則可能是I / O,這意味着從磁盤獲取數據需要花費很長時間。
您正在執行的操作是將$ xml中的所有元素與$ xml2中的所有元素組合在一起,這是一個O(n ^ 2)復雜性問題。 您可以嘗試通過使用哈希圖來降低復雜度,這在php中很容易,因為您獲得了本質上是哈希圖的關聯數組:
foreach($xml->results->concepts->concept as $value2) {
$total_concepts++;
$map[(string)$value2->name] = true;
}
foreach($xml1->results->concepts->concept as $value1) {
$total_similar_concepts++;
if (isset($map[(string)$value1->name]))
$comparisions++;
}
在最佳情況下,這使您的O(2n)復雜度大大優於以前的版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.