惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
爱范儿
爱范儿
小众软件
小众软件
K
Kaspersky official blog
P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
V
Vulnerabilities – Threatpost
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
C
Check Point Blog
S
Schneier on Security
P
Palo Alto Networks Blog
IT之家
IT之家
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Project Zero
Project Zero
Y
Y Combinator Blog
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
S
Securelist
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理

博客园 - Young.Jiang

Iframe的高级操作 Javascript模拟c#方法重载 设计模式学习:适配器模式 Linq学习笔记(2.3)——DLinq高级操作 Linq学习笔记(2.2)——深入DLinq查询 Linq学习笔记(2.1)——初识 DLinq Linq学习笔记(1.8)——Count、Sum、Min、Max、Average Linq学习笔记(1.7)——First、ElementAt、Any、all Linq学习笔记(1.6)——ToArray、ToList、ToDictionary、OfType Linq学习笔记(1.5)——group、Distinct、Union、Concat、Intersect、Except Linq学习笔记(1.4)——orderby、Reverse() Linq学习笔记(1.3)——Take、Skip Linq学习笔记(1.2)——select Linq学习笔记(1.1)——where 理解JavaScript中的对象 Asp.net Ajax 客户端编程(二)——Type 类,面向对象编程的开始 Asp.net Ajax 客户端编程(一)——对JS基本类型的扩展 EnterpriseLibrary 3.0的缓存应用程序块 EnterpriseLibrary 3.0的验证应用程序块
提高.NET性能的最佳实践
Young.Jiang · 2007-05-09 · via 博客园 - Young.Jiang

1)避免使用ArrayList,因为对象要转化为System.Object加入ArrayList,取出时又要转化为想要的类型,设计到大量的装箱拆箱过程,推荐使用自定义集合取代ArrayList,.net还在System.Collection.Specialized命名空间下为string提供了一个强类型的集合类StringCollection

2)用Hashtable 取代其他字典类型,如:StringDictionary, NameValueCollection, HybridCollection。

3)经常为字符串声明常量来封装他们

//避免
   MyObject obj = new MyObject();
   obj.Status 
= "ACTIVE"
   
//推荐    
   const string C_STATUS = "ACTIVE";
   MyObject obj 
= new MyObject();
   obj.Status 
= C_STATUS;

4)使用String.Compare取代将两个字符串转化为uppercase或lowercase再来比较他们

const string C_VALUE = "COMPARE";
   
if (String.Compare(sVariable, C_VALUE, true== 0)
   
{
         Console.Write(
"SAME");
   }

5)避免使用+操作符来连接字符串,而使用StringBuilder来连接

//避免
String sXML = "<parent>";
sXML 
+= "<child>";
sXML 
+= "Data";
  sXML 
+= "</child>";
sXML 
+= "</parent>";              //推荐
StringBuilder sbXML = new StringBuilder();
  sbXML.Append(
"<parent>");
sbXML.Append(
"<child>");
sbXML.Append(
"Data");
sbXML.Append(
"</child>");
sbXML.Append(
"</parent>");


6)对于只读xml文档,用XPathDocument取代XMLDocument

   //避免
   XmlDocument xmld = new XmlDocument();
   xmld.LoadXml(sXML);
   txtName.Text 
= xmld.SelectSingleNode("/packet/child").InnerText;
   
//推荐
   XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
   XPathNavigator xnav 
= xmldContext.CreateNavigator();
   XPathNodeIterator xpNodeIter 
= xnav.Select("packet/child");
   iCount 
= xpNodeIter.Count;
   xpNodeIter 
= xnav.SelectDescendants(XPathNodeType.Element, false); 
   
while(xpNodeIter.MoveNext())
   
{
         sCurrValues 
+= xpNodeIter.Current.Value+"~"
   }


7)避免在循环体类声明并初始化对象,而应该在循环体外声明,在循环体类初始化!

   //避免
   for(int i=0; i<10; i++)
   
{
       SomeClass objSC 
= new SomeClass();
   }

   
//推荐
   SomeClass objSC = null;
   
for(int i=0; i<10; i++)
   
{
       objSC 
= new SomeClass();
   }


下面是专门针对Web程序性能的设计方针
1) Viewstate 会动态增加页面体积,所以要小心的使用控件的Viewstate 属性。
2) 尽可能使用ajax。
3) 使用server.tranfer取代response.redirect。
4) 尽可能使用repeater和datalist取代datagrid。
5) 尽量避免Throw来控制程序流程,因为Throw会消耗大量资源。
6) 避免过度使用异常处理程序块,只在你无法控制的地方做异常处理。
7) 大量dataset很昂贵,尽量一次取得最多的数据,然后销毁dataset
8) 使用缓存
9) 使用合适的认证机制
10)使用Finally方法释放资源
11)网站发布后将Debug和trace设为false。