程序开发 > C# > 正文

提高循环效率要注意的4个问题C#

亮术网 2020-07-21 本网原创

在编程过程中,使用循环是经常的事;如果循环次数少,性能的差别表现不明显;反之,如果循环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、能用循环代替递归调用的,就不要用递归调用,递归效率低一点;此外,尽量减少循环嵌套,循环嵌套会严重降低效率。