zoukankan      html  css  js  c++  java
  • 微小改动提升程序性能

    相对于原来的for语句foreach具有更好的执行效率,foreach的平均花费时间只有for30%。通过测试结果在forforeach都可以使用的情况下,我们推荐使用效率更高的foreach另外,for写入数据时间大约是读取数据时间的10倍左右;

    Ø           程序中,使用sa账号的是一种非常不安全的做法,它具有在数据库上执行任何操作的权限。黑客可以调用类似于xp_cmdshell这样的扩展存储过程进行攻击;

    Ø          在处理数据交互的时候,尽量将组织SQL语句的处理放到中间层(比如专门的数据操作类、存储过程等),这是防止注入式攻击的有效方法;

    Ø           避免到服务器的不必要的往返过程。使用 Page.IsPostBack 避免对往返过程执行不必要的处理;

    Ø          一定要禁用调试模式;

    Ø          一般情况下,读取大量数据,对返回数据不做大量处理用SqlDataReader.对返回数据大量处理用DatSet比较合适.SqlDataReaderDataSet的选择取决于程序功能的实现;

    Ø          数据绑定建议使用<%# ctype(Container.DataItem,DataRowView).Row("字段名") %>数据量大的时候可提高几百倍的速度;

    Ø          使用短路的逻辑运算
    VB.net的逻辑运算中使用 Andalso 代替 AndOrElse 代替Or
    C#的逻辑运算中用使用&& 代替 &,用||代替|.
    所谓短路运算是指-编译的代码可以根据一个表达式的计算结果跳过对另一表达式的计算,例如:
    逻辑运算 if A and B then,其中AB是表达式,代码运行时,要分别计算A B的值,而如果是
    if A Andalso B thenA先计算,如果A的值为true,则不再计算B的值。这样如果B的计算复杂或
    涉及过程调用,使用Andalso则会减小不必要的性能损耗。
    对于ororelse,情况和上面相同不再废话。

    Ø          使用+=-= 等简化操作符
    例如原有表达式 A=A+B
    改为A+=B
    这样不仅减少了敲入代码的数量,而且由于变量A只出现一次,在运行时也提高了系统的性能
    类此的操作符还有*="=/=&=

    Ø          使用stringBuilder代替string
    string类型在内存中是不可变的,对已经定义的string类型的变量所做的任何修改,系统实际在
    内存中都是新建一个string,而sringbuilder class则是在内存中新建对象,对其操作都是对这
    个对象的修改。因此使用stringBuilder代替string会提高运行时的性能。

    Ø          for循环内部定义变量
    例如:for(int i=1;i<=10;i++)
    {
    ....
    }
    而不是:int i;
    for(i=1;i<=10;i++)
    {
    ....
    }

    Ø          设置Option Strict 启用
    vs.net中启用Option Strict,要求代码中的数据类型严格转换,避免由系统转换造成的性能影响

    Ø          VB.net类型转换时考虑使用DirectCast代替Ctype
    vb.net中如果将某类型对象转成其继承型对象,例如将一个“control” 转成一个textbox(textboxControl继承) 使用DirectCast代替Ctype,这会提高系统性能,但是如果要将一个Integer转成 String ,则不能 使用,因为IntegerString类型不是继承关系。
    C#中没有和DirectCast相应的函数。

  • 相关阅读:
    删除顺序表L中下标为p(0<=p<=length-1)的元素,成功返回1,不成功返回0,并将删除元素的值赋给e
    设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。
    数据结构-顺序表基本操作的实现(含全部代码)【转】
    【转】结构体指针
    结构体(第十四章 )
    线性表
    第二章 c语言概述
    时间复杂度
    软件质量与测试 黑盒测试
    软件质量保证与测试 基本内容
  • 原文地址:https://www.cnblogs.com/AlexCheng/p/1662350.html
Copyright © 2011-2022 走看看