用于简单搜索的高效树遍历

时间:2015-04-28 18:33:48

标签: php search recursion tree mib

我正在使用我用PHP编写的MIB解析器来构建我正在构建的SNMP Web界面项目。

节点对象处于流动结构中:

class MibNode 
{
    public $name;
    public $oid;
    public $type;
    public $status;
    public $description;
    public $canRead;
    public $canWrite;
    public $parent = null;
    public $children = array();
}

我正在尝试通过它的名称获取节点对象。 我为此写了一个递归函数:

public function getNodeByName($name)
{
    if($this->name === $name)
    {
        return $this;
    }
    else
    {
        foreach($this->children as $child)
        {
            $node = $child->getNodeByName($name);
            if($node != null)
                return $node;
        }
        return null;
    }
}

我的项目存在一些性能问题,所以我对代码进行了分析,发现这个函数被称为~106,000次。

有什么方法可以减少对此功能的调用,或提高性能?

完整的解析器代码可用here

编辑:我使用xdebug配置文件工具分析了该功能的用法,结果是可用的here

0 个答案:

没有答案