一起谈.NET技术,性能优化总结

  最近在领导的要求下做了一下项目的优化,总结如下:

  1. 使用存储过程(如果在程序里用exec 存储过程参数,这样执行似乎并没有快多少)。

    在数据库里是预编译的,也不需要在字符串传输上花费大量时间。 防sql注入攻击。

  2. 尽量优化数据库语句,使逻辑尽量简单

        a) 还有就是在使用函数时,charindex >like > padindex  效率依次递减。

    b) 查询字段是否包含在以,分隔的字段串时,最好不要用in  速度非常慢。

    还有好多,可以总结的,这里就不再描述了。

  3.  EnableViewState(页面的视图状态)。如果无特殊要求设置为false

  使用ViewState,每个对象都必须先序列化到ViewState中,然后再通过回传进行反序列化,因此使用ViewState是有代价的。尽量减少使用对象,如果可能,尽量减少放入ViewState中的对象的数目。下面情况基本上可以禁用ViewState:

  (1) 页面控件 (.ascx)。

      (2) 页面不回传给自身。

      (3) 无需对控件的事件处理。

      (4) 控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理)。

  单个页面或每个页面都禁用 ViewState,如下所示:

  单个页面:<%@ Page EnableViewState="False" %>

  每个页面:在 web.config 中 <Pages EnableViewState="false" />

  EnableSessionState保持默认值即可(如果页面用到sessionstate它才会占用资源)。

  EnableViewStateMac如果无安全上的特殊要求,保持默认值。

  4.  Pagelayout页面布局模型

  建议使用Flowlayout(元素不带绝对定位属性添加)。Gridlayout(绝对定位属性)由于采用绝对定位,将会比Flowlayout生产更多的代码,主要是控件的定位信息。radiobuttonlist和checkboxlist等

  5. 项目发布的时候切记解除页面的Debug状态

  6. 尽量选择html控件

  能在客户端实现的功能就在客户端实现(熟练掌握JavaScript),减少服务器的压力。数据控件选择顺序:Repeater、DataList、DataGrid。

  7. 在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。

  8. 字符串操作性能优化

  (1) 使用值类型的ToString方法。

  在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作 ,转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。

  (2) 运用StringBuilder类

  String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。在处理字符串时,最好使用StringBuilder类,其.NET 命名空间是System.Text。该类并非创建新的对象,而是通过Append,Remove,Insert等方法直接对字符串进行操作,通过 ToString方法返回操作结果。 

  9. 只要可能就缓存数据或页输出

  ASP.NET 提供了一些简单的机制,它们会在不需要为每个页请求动态计算页输出或数据时缓存这些页输出或数据。另外,通过设计要进行缓存的页和数据请求(特别是在站点中预期将有较大通讯量的区域),可以优化这些页的性能。与.NET Framework的任何Web窗体功能相比,适当地使用缓存可以更好的提高站点的性能,有时这种提高是超数量级的。使用ASP.NET缓存机制有两点需要注意。首先,不要缓存太多项。缓存每个项均有开销,特别是在内存使用方面。不要缓存容易重新计算和很少使用的项。其次,给缓存的项分配的有效期不要太短。很快到期的项会导致缓存中不必要的周转,并且经常导致更多的代码清除和垃圾回收工作。若关心此问题,请监视与ASP.NET Applications 性能对象关联的Cache Total Turnover Rate性能计数器。高周转率可能说明存在问题,特别是当项在到期前被移除时。这也称作内存压力。

  10. 使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向

  采用 Server.Transfer 语法,在页面中使用该方法可避免不必要的客户端重定向。但要根据情况区分Response.Redirect .Response.Execute的使用方法,区别对待。

  11 .适当地使用公共语言运行库的垃圾回收器和自动内存管理

  小心不要给每个请求分配过多内存,因为这样垃圾回收器将必须更频繁地进行更多的工作。另外,不要让不必要的指针指向对象,因为它们将使对象保持活动状态,并且应尽量避免含Finalize方法的对象,因为它们在后面会导致更多的工作。特别是在 Finalize 调用中永远不要释放资源,因为资源在被垃圾回收器回收之前可能一直消耗着内存。最后这个问题经常会对Web服务器环境的性能造成毁灭性的打击,因为在等待 Finalize 运行时,很容易耗尽某个特定的资源。

  12. 不要依赖代码中的异常

  因为异常大大地降低性能,所以您不应该将它们用作控制正常程序流程的方式。如果有可能检测到代码中可能导致异常的状态,请执行这种操作。不要在处理该状态之前捕获异常本身。常见的方案包括:检查null,分配给将分析为数字值的String 一个值,或在应用数学运算前检查特定值。

  13. 使用HttpResponse.Write方法进行字符串串联

  该方法提供非常有效的缓冲和连接服务。但是,如果您正在执行广泛的连接,请使用多个Response.Write 调用。下面示例中显示的技术比用对Response.Write 方法的单个调用连接字符串更快。

  Response.Write("atest");
  Response.Write(strString);
  Response.Write("boxbig");

  14. 除非有特殊的原因要关闭缓冲,否则使其保持打开。

  禁用 Web 窗体页的缓冲会导致大量的性能开销。

  15. 避免到服务器的不必要的往返过程

  使用Page.IsPostBack避免对往返过程执行不必要的处理。

  虽然您很可能希望尽量多地使用Web窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用 ASP.NET 服务器控件和回发事件处理。通常,只有在检索或存储数据时,您才需要启动到服务器的往返过程。多数数据操作可在这些往返过程间的客户端上进行。

  16. ASP.NET应用程序性能测试

  在对ASP.NET应用程序进行性能测试之前,应确保应用程序没有错误,而且功能正确。具体的性能测试可以采用以下工具进行:Web Application Strees Tool (WAS)是Microsoft发布的一个免费测试工具。它可以模拟成百上千个用户同时对Web应用程序进行访问请求,在服务器上形成流量负载,从而达到测试的目的,可以生成平均TTFB、平均TTLB等性能汇总报告。 Application Center Test (ACT) 是一个测试工具,附带于Visual Studio.NET的企业版中,是Microsoft正式支持的Web应用程序测试工具。它能够直观地生成图表结果,功能比WAS多,但不具备多个客户机同时测试的能力。服务器操作系统"管理工具"中的"性能"计数器,可以对服务器进行监测以了解应用程序性能。微软还是出了IIS日志查看工具 LogParserLizardSetup.msi,LogParser.msi 两者配合使用。可查看每一个页面加载调用执行的时间。

  17.  压缩js

  js在页面中调用的大小写要保持一致,免得缓存了不同的文件,页面的js可以的话,写成单位的文件进行调用 。图片少用jpeg,使用gzip对网页进行压缩. 加快页面展示速度。

  18.  把调用js,尽量写在页面底部, 还有viewstate 状态也可以重写到页面低部, 也可以把viewstate进行压缩。条件是viewstate必要要用的情况之下。

时间: 2024-09-20 18:27:46

一起谈.NET技术,性能优化总结的相关文章

从虚拟机视角谈Java应用性能优化

Java 的普及和广泛应用,以及其基于虚拟机运行的机制,使得性能问题越来越重要.本文从 Java 虚拟机的角度,特别是垃圾回收机制来剖析了 Java 应用程序设计需要注意的方面,并总结出了几条非常容易被忽视的设计.编写代码的原则和习惯.最后通过实例来介绍几种主要的 Java Profiler 工具对我们进行开发和分析的帮助.本文要求读者具有一定的 Java 虚拟机的基础知识,一定的 Java 设计模式和开发经验.通过阅读本文,读者能从 Java 运行的本质上对性能方面有一个很好的把握,在设计和编

浅谈MySQL 数据库性能优化

MySQL数据库是 IO 密集型的程序,和其他数据库一样,主要功能就是数据的持久化以及数据的管理工作.本文侧重通过优化MySQL 数据库缓存参数如查询缓存,表缓存,日志缓存,索引缓存,innodb缓存,插入缓存,以及连接参数等方式来对MySQL数据库进行优化. 缓存参数 这里先引用一句话,从内存中读取一个数据的时间消耗是微秒级别,而从普通硬盘上读取一个数据是在毫秒级别,二者相差3个数量级.可见,想对MySQL数据库进行优化,合理调配缓存参数显得更为直接 表缓存 相关参数: table_open_

一起谈.NET技术,Silverlight性能优化纪要

Silverlight作为微软为富网络应用所做的一个全新的架构,其优秀的表现力让开发者和用户感受到了强烈的冲击,无数的开发者为其着迷,同时微软的广大设计者也在不断地为其完善和充实,同时Silverlight团队也积极的构建Silverlight 5,其初步的版本已在 http://channel9.msdn.com/Series/Silverlight-Firestarter做了演示,从中你可以感受到Silverlight未来之路.我在学习了里面的性能优化的Event后,对这部分的介绍做了一个摘

一起谈.NET技术,如何对ASP.NET进行性能优化

一.SqlDataRead和Dataset的选择 Sqldataread优点:读取数据非常快.如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多.缺点:直到数据读完才可close掉于数据库的连接. (SqlDataReader 读数据是快速向前的.SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法.它使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据.DataReader

【干货合集】你所不知道的蚂蚁技术系列之(一):系统设计、性能优化、运维

8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践. 蚂蚁金服&阿里云在线金融技术峰会专题:https://yq.aliyun.com/activity/109 峰会统一报名链接:http://yq.aliyun.com/webinar/join/38 2015双11,蚂蚁金服旗下支付宝共完

千百倍的性能提升-Andrew大师谈数据库性能优化

在今年3月份RWP中国之旅技术分享活动期间Andrew大师和AWR之父Graham接受了记者采访,首次对外讲述自己的职业生涯和心路历程,分享了他们在中国的感受和期待,并就当前IT系统现状做了深入分析,表达了RWP团队的使命和宗旨,同时也对广大技术爱好和追求者给出了中肯的建议和指导. 本文为采访原文,若需要阅读中文版,请查看: 甲骨文副总裁谈性能优化:百倍和千倍的性能提升才值得兴奋 Xue:First of all, it is an honor to have to you here one m

asp.net小谈网站性能优化

当然,网站性能优化是多方面的,这里先谈一下这些天来的所获: 1.书写代码的习惯: 再复杂的逻辑,也是从最简单的开始.在书写代码的过程中,很多不好的规范都会影响网站的性能: 以下是整理出来的些许代码习惯: 1)字符串的比较 用 string.Empty 代替 " " 2)在遍历过程中,先定义好计数变量, 再遍历, 这样会减少每次遍历就分配一次内存空间: 复制代码 代码如下: int i; for( i=0; i<100;i++) { // codeing } 3)同样的,用 Str

Oracle数据库性能优化技术

摘要: Oracle数据库是当前应用最广泛的大型数据库之一,而其性优化直接关系到系统的运行效率.本文以数据库性能优化的基本原则为出发点,阐述了在数据库设计阶段如何避免竞争和如何优化数据访问,在数据库运行阶段如何从操作系统和数据库实例级别上调整内存和I/O来达到数据库性能优化的各种技术. 关键词:Oracle数据库:性能优化:内存:I/O 1. 引言 随着网络应用和电子商务的不断发展,各个站点的访问量越来越大,数据库规模也随之不断的扩大,数据库系统的性能问题就越来越突出,因此,如何对数据库进行调优

网站性能优化之CSS无图片技术 提高价值速度

一.无图片技术定义 在不使用CSS Image(通过CSS的引入的背景图片,不包括img标签内的图片)情况下生成类似图片效果的技术;换句话的意思就是在使用纯CSS生成类似图片效果的技术. 二.为什么要"无图片"? 首先我们通过yslow的statistics查看新浪微博最新版首页的文件,得到Stylesheet File(CSS文件)大小为206.8K, CSS Image大小为623.8K.明显发现CSS文件比CSS Image小很多. 当然单纯拿这两个来比,还不能说明什么. 下面我

网站性能优化之CSS无图片技术

一.无图片技术定义 在不使用CSS Image(通过CSS的引入的背景图片,不包括img标签内的图片)情况下生成类似图片效果的技术;换句话的意思就是在使用纯CSS生成类似图片效果的技术. 二.为什么要"无图片"? 首先我们通过yslow 的statistics查看新浪微博最新版首页的文件,得到Stylesheet File(CSS文件)大小为206.8K, CSS Image大小为623.8K.明显发现CSS文件比CSS Image小很多. 当然单纯拿这两个来比,还不能说明什么. 下面