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是表达式,代码运行时,要分别计算 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,这会提高系统性能,但是如果要将一个Intege

    原文地址:http://www.cnblogs.com/AlexCheng/archive/2010/02/03/1662350.html

  • 相关阅读:
    Codeforces 1167E(思路、数据处理)
    Codeforces 185D(发现性质、欧拉定理)
    BUPT2017 springtraining(16) #4 ——基础数论
    Codeforces Round #404 (Div. 2)——ABCDE
    BUPT2017 springtraining(15) #3
    BUPT2017 springtraining(16) #3 ——搜索与动态规划
    BUPT2017 springtraining(16) #2 ——基础数据结构
    Codeforces Round #413(Div. 1 + Div. 2, combined)——ABCD
    BUPT2017 springtraining(16) #1 ——近期codeforces简单题目回顾
    Codeforces Round #400 (Div. 1 + Div. 2, combined)——ABCDE
  • 原文地址:https://www.cnblogs.com/leqoqo/p/1822671.html
Copyright © 2011-2022 走看看