我正在使用我用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。