C# 性能优化 :减少重复代码

.Net技术 码拜 10年前 (2015-01-23) 3087次浏览 0个评论

减少重复代码 是最基本的 性能优化 方案,尽可能减少那些重复做的事,让他们只做一次,比较常见是这种代码,同样的Math.Cos(angle) 和Math.Sin(angle)都做了2次。

  1. private Point RotatePt(double angle, Point pt)
  2. {
  3.      Point pRet = new Point();
  4.      angle = -angle;
  5.      pRet.X = (int)((double)pt.X * Math.Cos(angle) – (double)pt.Y * Math.Sin(angle));
  6.      pRet.Y = (int)((double)pt.X * Math.Sin(angle) + (double)pt.Y * Math.Cos(angle));
  7.      return pRet;
  8. }

优化后

  1. private Point RotatePt3(double angle, Point pt)
  2. {
  3.     Point pRet = new Point();
  4.     angle = -angle;
  5.     double SIN_ANGLE = Math.Sin(angle);
  6.     double COS_ANGLE = Math.Cos(angle);
  7.     pRet.X =(int)(pt.X * COS_ANGLE – pt.Y * SIN_ANGLE);
  8.     pRet.Y = (int)(pt.X * SIN_ANGLE + pt.Y * COS_ANGLE);
  9.     return pRet;
  10. }

还有另一种 ,在方法中实例化一个对象, 但是这个对象其实是可以复用的。

  1. public static string ConvertQuot(string html)
  2. {
  3.     Regex regex = new Regex(“&(quot|#34);”, RegexOptions.IgnoreCase);
  4.     return regex.Replace(html, “\””);
  5. }

优化后

  1. readonly static Regex ReplaceQuot = new Regex(“&(quot|#34);”, RegexOptions.IgnoreCase | RegexOptions.Compiled);
  2. public static string ConvertQuot(string html)
  3. {
  4.     return ReplaceQuot.Replace(html, “\””);
  5. }

还有一种是不必要的初始化,比如调用out参数之前,是不需要初始化的。

  1. public bool Check(int userid)
  2. {
  3.     var user = new User();
  4.     if(GetUser(userid,out user))
  5.     {
  6.         return user.Level > 1;
  7.     }
  8.     return false;
  9. }

这里的new User()就是不必要的操作,

优化后

  1. public bool Check(int userid)
  2. {
  3.     User user;
  4.     if(GetUser(userid,out user))
  5.     {
  6.         return user.Level > 1;
  7.     }
  8.     return false;
  9. }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 性能优化 :减少重复代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!