繁体   English   中英

XML解析速度加快。 PHP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM