我刚刚看到一个看起来非常像这样的代码:
public static string GetXmlAttributeValue(XmlNode Node, string attributeName, string defVal)
{
try
{
return Node.Attributes.GetNamedItem(attributeName).Value;
}
catch(Exception)
{
return defVal;
}
}
此方法的ideea是尝试获取节点的属性,如果没有则返回默认值。将代码更改为以下内容后:
public static string GetXmlAttributeValue(XmlNode Node, string attributeName, string defVal)
{
if(Node.Attributes.GetNamedItem(attributeName) != null)
return Node.Attributes.GetNamedItem(attributeName).Value;
return defVal;
}
我看到了性能的大幅提升。更确切地说,在大约5000次调用此函数时,第一次实现需要大约2秒,而第二次实现几乎是即时的(我需要提到属性不存在的概率非常高,所以会发生很多事情。)
我的问题是为什么会发生这种情况?我google-ed try catch如何工作,但没有发现任何可以澄清我的问题
答案 0 :(得分:0)