从细微处提高你代码的性能-vs.net代码篇
我们都知道提高应用程序性能的方法有-改进应用程序的设计、改进算法、使用存储过程...等等,
但是你是否想到从细微处着手,可能有些你平时忽略的小地方也存在着性能改进的余地呢?
1.使用“短路”的逻辑运算
在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,情况和上面相同不再废话。
2.使用+=、-= 等简化操作符
例如原有表达式 A=A+B
改为A+=B
这样不仅减少了敲入代码的数量,而且由于变量A只出现一次,在运行时也提高了系统的性能
类此的操作符还有*=、\=、/=、&=等
3.使用stringBuilder代替string
string类型在内存中是不可变的,对已经定义的string类型的变量所做的任何修改,系统实际在
内存中都是新建一个string,而sringbuilder class则是在内存中新建对象,对其操作都是对这
个对象的修改。因此使用stringBuilder代替string会提高运行时的性能。
4.在for循环内部定义变量
例如:for(int i=1;i<=10;i++)
{
....
}
而不是:int i;
for(i=1;i<=10;i++)
{
....
}
5.设置Option Strict 启用
在vs.net中启用Option Strict,要求代码中的数据类型严格转换,避免由系统转换造成的性能影响
6.在VB.net类型转换时考虑使用DirectCast代替Ctype
在vb.net中如果将某类型对象转成其继承型对象,例如将一个“control” 转成一个textbox时(textbox从Control继承)请 使用DirectCast代替Ctype,这会提高系统性能,但是如果要将一个Integer转成 String ,则不能 使用,因为Integer和String类型不是继承关系。
在C#中没有和DirectCast相应的函数。
在vs.net2005中,会有新的转换函数TryCast