提高循环效率要注意的4个问题C#
在编程过程中,使用循环是经常的事;如果循环次数少,性能的差别表现不明显;反之,如果循环100万次、1000万次、甚至更多,性能的差别在时间就会表现得很明显,本来用几十毫秒就可以执行完,结果用了几百毫秒,甚至更多。所以,平常写程序多注意积累性能效率方面的知识,在关键时刻的优势就体现出来了。那么循环中提高效率要注意哪些问题呢?
举例要用到的类如下:
//用户类
public class UserInfo
{
string userName;
string address;
int age;
}
1、避免在循环中声明变量,尤其是声明对象
低效:
for (int i = 0; i < 100000; i++)
{
UserInfo uObj = new UserInfo();
if(uObj.userName == "李静海")
{
}
}
高效:
UserInfo uObj = new UserInfo();
for (int i = 0; i < 100000; i++)
{
if(uObj.userName == "李静海")
{
}
}
提示:创建对象要消耗大量的系统资源,如果在循环中不断重复创建对然,将会使系统性能大幅下降,所以要尽量避免创建对象。
2、避免重复计算集合中的元素总数
IList lst = new List();
低效:
for (int i = 0; i < list.count; i++)
{
if(lst[i].userName == "李静海")
{
}
}
高效:
int lth = list.count;
for (int i = 0; i < lth; i++)
{
if(uObj.userName == "李静海")
{
}
}
3、foreach 比 for 效率高一点,能用 foreach 的就不要用 fo,在《实例比较for和foreach的效率C#》一文中将用实例具体比较它们的效率差别。
4、能用循环代替递归调用的,就不要用递归调用,递归效率低一点;此外,尽量减少循环嵌套,循环嵌套会严重降低效率。