您的位置:首页 > 其它

微小改动提升程序性能

2010-02-03 08:48 513 查看
相对于原来的for语句foreach具有更好的执行效率,foreach的平均花费时间只有for的30%。通过测试结果在for和foreach都可以使用的情况下,我们推荐使用效率更高的foreach。另外,用for写入数据时间大约是读取数据时间的10倍左右;
Ø 在程序中,使用sa账号的是一种非常不安全的做法,它具有在数据库上执行任何操作的权限。黑客可以调用类似于xp_cmdshell这样的扩展存储过程进行攻击;

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

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

Ø 一定要禁用调试模式;

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

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

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

Ø 使用+=、-= 等简化操作符
例如原有表达式 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时(textbox从Control继承)请 使用DirectCast代替Ctype,这会提高系统性能,但是如果要将一个Integer转成 String ,则不能 使用,因为Integer和String类型不是继承关系。
在C#中没有和DirectCast相应的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: