ASP.NET性能:哪个更快?

时间:2013-08-05 17:44:03

标签: c# asp.net xml exception

我在这里有一个选择。两个意见:

一个是读取XML文件,该文件大约有一页长,两次,并试图找出是否可以找到某个属性值并将其分配给字符串。第一次是找出属性是否存在而不是null。第二次阅读并分配值。

If([xmlAttribute]!= null){
  string = xmlAttribute;
}

两个只是读取相同的XML文件一次并尝试直接分配值而不先尝试找到它。如果失败,它将抛出异常,catch块将字符串赋值为null。

try{
  string = [xmlAttribute];
}catch(Exception ex){
  string = null;
}

哪种方式更快?或者更好的主意? 感谢。

3 个答案:

答案 0 :(得分:4)

创建异常需要很多开销 - 有关方法,堆栈跟踪和基础错误的详细信息非常耗时。使用异常作为预期程序逻辑的一部分是编码不佳。

寻找一种检查数据的方法,尽可能不抛出异常。

答案 1 :(得分:0)

阅读一次而不是两次会更快。

但这并不一定意味着更好。

答案 2 :(得分:0)

假设您正在使用Linq to XML:

var element = xml.Element("Name");
var attribute = element == null ? null : element.Attribute("first");
var value = attribute == null ? null : attribute.Value;

我通常会添加一些扩展方法来简化此过程,例如:

var value = xml.Element("Name").OptionalAttribute("first").ValueOrDefault();

如何命名扩展方法取决于您。