asp_net性能优化总结

asp_net性能优化总结

ID:39464774

大小:83.50 KB

页数:22页

时间:2019-07-03

asp_net性能优化总结_第1页
asp_net性能优化总结_第2页
asp_net性能优化总结_第3页
asp_net性能优化总结_第4页
asp_net性能优化总结_第5页
资源描述:

《asp_net性能优化总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、asp.net性能优化总结1.C#语言方面1.1垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。 1.1.1避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。 1.1.1.1避免循环创建对象★ 如果对象并不会随每次循环而改变状态,那么在循环中反复创建对象将带来性能损耗。高效的做法是将对象提到循环外面创建。 1.1.1.2在需要逻辑分支中创建对象 如果对象只在某些

2、逻辑分支中才被用到,那么应只在该逻辑分支中创建对象。 1.1.1.3使用常量避免创建对象 程序中不应出现如newDecimal(0)之类的代码,这会导致小对象频繁创建及回收,正确的做法是使用Decimal.Zero常量。我们有设计自己的类时,也可以学习这个设计手法,应用到类似的场景中。 1.1.1.4使用StringBuilder做字符串连接1.1.2不要使用空析构函数★ 如果类包含析构函数,由创建对象时会在Finalize队列中添加对象的引用,以保证当对象无法可达时,仍然可以调用到Finalize方法

3、。垃圾回收器在运行期间,会启动一个低优先级的线程处理该队列。相比之下,没有析构函数的对象就没有这些消耗。如果析构函数为空,这个消耗就毫无意义,只会导致性能降低!因此,不要使用空的析构函数。 在实际情况中,许多曾在析构函数中包含处理代码,但后来因为种种原因被注释掉或者删除掉了,只留下一个空壳,此时应注意把析构函数本身注释掉或删除掉。 1.1.3实现IDisposable接口 垃圾回收事实上只支持托管内在的回收,对于其他的非托管资源,例如WindowGDI句柄或数据库连接,在析构函数中释放这些资源有很大问题

4、。原因是垃圾回收依赖于内在紧张的情况,虽然数据库连接可能已濒临耗尽,但如果内存还很充足的话,垃圾回收是不会运行的。 C#的IDisposable接口是一种显式释放资源的机制。通过提供using语句,还简化了使用方式(编译器自动生成try...finally块,并在finally块中调用Dispose方法)。对于申请非托管资源对象,应为其实现IDisposable接口,以保证资源一旦超出using语句范围,即得到及时释放。这对于构造健壮且性能优良的程序非常有意义!为防止对象的Dispose方法不被调用的情

5、况发生,一般还要提供析构函数,两者调用一个处理资源释放的公共方法。同时,Dispose方法应调用System.GC.SuppressFinalize(this),告诉垃圾回收器无需再处理Finalize方法了。1.2String操作 1.2.1使用StringBuilder做字符串连接 String是不变类,使用+操作连接字符串将会导致创建一个新的字符串。如果字符串连接次数不是固定的,例如在一个循环中,则应该使用StringBuilder类来做字符串连接工作。因为StringBuilder内部有一个St

6、ringBuffer,连接操作不会每次分配新的字符串空间。只有当连接后的字符串超出Buffer大小时,才会申请新的Buffer空间。典型代码如下:StringBuildersb=newStringBuilder(256);for(inti=0;i

7、tringstr=str1+str2+str3+str4; 会被编译为String.Concat(str1,str2,str3,str4)。该方法内部会计算总的String长度,仅分配一次,并不会如通常想象的那样分配三次。作为一个经验值,当字符串连接操作达到10次以上时,则应该使用StringBuilder。 这里有一个细节应注意:StringBuilder内部Buffer的缺省值为16,这个值实在太小。按StringBuilder的使用场景,Buffer肯定得重新分配。经验值一般用256作为Buffe

8、r的初值。当然,如果能计算出最终生成字符串长度的话,则应该按这个值来设定Buffer的初值。使用newStringBuilder(256)就将Buffer的初始长度设为了256。 1.2.2避免不必要的调用ToUpper或ToLower方法 String是不变类,调用ToUpper或ToLower方法都会导致创建一个新的字符串。如果被频繁调用,将导致频繁创建字符串对象。这违背了前面讲到的“避免频繁创建对象”这一基本原则。 例如,bool.P

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。