c#

位置:IT落伍者 >> c# >> 浏览文章

优化 .NET的性能


发布日期:2020年02月24日
 
优化 .NET的性能

)避免使用ArrayList

因为任何对象添加到ArrayList都要封箱为SystemObject类型从ArrayList取出数据时要拆箱回实际的类型建议使用自定义的集合类型代替 提供了一个新的类型叫泛型这是一个强类型使用泛型集合就可以避免了封箱和拆箱的发生提高了性能

)使用HashTale代替其他字典集合类型(如StringDictionaryNameValueCollectionHybridCollection)存放少量数据的时候可以使用HashTable

)为字符串容器声明常量不要直接把字符封装在双引号 里面

//避免

//

MyObject obj = new MyObject();

objStatus = ACTIVE;

//推荐

const string C_STATUS = ACTIVE;

MyObject obj = new MyObject();

objStatus = C_STATUS;

) 不要用UpperCaseLowercase转换字符串进行比较用StringCompare代替它可以忽略大小写进行比较

const string C_VALUE = COMPARE;

if (StringCompare(sVariable C_VALUE true) == )

{

ConsoleWrite(SAME);

}

) 用StringBuilder代替使用字符串连接符 +

//避免

String sXML = ;

sXML += ;

sXML += Data;

sXML += ;

sXML += ;

//推荐

StringBuilder sbXML = new StringBuilder();

sbXMLAppend( );

sbXMLAppend();

sbXMLAppend(Data);

sbXMLAppend();

sbXMLAppend();

) If you are only reading from the XML object avoid using XMLDocumentt instead use XPathDocument which is readonly and so improves performance

如果只是从XML对象读取数据用只读的XPathDocument代替XMLDocument可以提高性能

//避免

XmlDocument xmld = new XmlDocument();

xmldLoadXml(sXML);

txtNameText = xmldSelectSingleNode(/packet/child)InnerText;

//推荐

XPathDocument xmldContext = new XPathDocument(new StringReader(oContextValue));

XPathNavigator xnav = xmldContextCreateNavigator();

XPathNodeIterator xpNodeIter = xnavSelect(packet/child);

iCount = xpNodeIterCount;

xpNodeIter = xnavSelectDescendants(XPathNodeTypeElement false);

while(xpNodeIterMoveNext())

{

sCurrValues += xpNodeIterCurrentValue+~;

}

) 避免在循环体里声明变量应该在循环体外声明变量在循环体里初始化

//避免

for(int i=; i<; i++)

{

SomeClass objSC = new SomeClass();

}

//推荐

SomeClass objSC = null;

for(int i=; i<; i++)

{

objSC = new SomeClass();

}

) 捕获指定的异常不要使用通用的SystemException

//避免

try

{

}

catch(Exception exc)

{

}

//推荐

try

{

}

catch(SystemNullReferenceException exc)

{

}

catch(SystemArgumentOutOfRangeException exc)

{

}

catch(SystemInvalidCastException exc)

{

}

) 使用Trycatchfinally时 要在finally里释放占用的资源如连接文件流等

不然在Catch到错误后占用的资源不能释放

try

{

}

catch

{}

finally

{

conntionclose()

}

) 避免使用递归调用和嵌套循环使用他们会严重影响性能在不得不用的时候才使用

) 使用适当的Caching策略来提高性能

上一篇:C#中通过读取配置文件动态创建泛型对象

下一篇:如果.Net架构网站遇到大表该怎么办?