C#程序员应该养成的程序性能优化写法
2021-06-22 04:03
标签:led 有一个 obj 循环 复杂 分享图片 max single exce 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿来说都是没有问题的 不过作为一只有理想的CodeMonkey,我还是希望给大家分享一些性能优化心得 曾经在网上听过这样一句话 程序的可读性和性能是成反比的 我非常赞同这句话,所以对于那些极度影响阅读的性能优化我就不在这里赘述了 今天主要说的就是一些举手之劳即可完成的性能优化 这是最基本的优化方案,尽可能减少那些重复做的事,让他们只做一次 比较常见是这种代码,同样的Math.Cos(angle) 和Math.Sin(angle)都做了2次 优化后 还有另一种 ,在方法中实例化一个对象, 但是这个对象其实是可以复用的 优化后 还有一种是不必要的初始化,比如调用out参数之前,是不需要初始化的 这里的new User()就是不必要的操作, 优化后 不要迷信正则表达式 正好在第一个栗子里说到了正在表达式(Regex)对象就顺便一起说了 很多人以为正则表达式很快,非常快,超级的快 虽然正则表达式是挺快的,不过千万不要迷信他,不信你看下面的栗子 有多少人认为正则表达式比较快的,举个手?? 结果为10w次循环的时间 ,即使是10个Replace连用,也比Regex好,所以不要迷信他 ConvertQuot1:3518 ConvertQuot2:12479 最后给你们看一个真实的,杯具的栗子
减少重复代码
private Point RotatePt(double angle, Point pt)
{
Point pRet = new Point();
angle = -angle;
pRet.X = (int)((double)pt.X * Math.Cos(angle) - (double)pt.Y * Math.Sin(angle));
pRet.Y = (int)((double)pt.X * Math.Sin(angle) + (double)pt.Y * Math.Cos(angle));
return pRet;
}
private Point RotatePt3(double angle, Point pt)
{
Point pRet = new Point();
angle = -angle;
double SIN_ANGLE = Math.Sin(angle);
double COS_ANGLE = Math.Cos(angle);
pRet.X =(int)(pt.X * COS_ANGLE - pt.Y * SIN_ANGLE);
pRet.Y = (int)(pt.X * SIN_ANGLE + pt.Y * COS_ANGLE);
return pRet;
}
public static string ConvertQuot(string html)
{
Regex regex = new Regex("&(quot|#34);", RegexOptions.IgnoreCase);
return regex.Replace(html, "\"");
}
readonly static Regex ReplaceQuot = new Regex("&(quot|#34);", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public static string ConvertQuot(string html)
{
return ReplaceQuot.Replace(html, "\"");
}
public bool Check(int userid)
{
var user = new User();
if(GetUser(userid,out user))
{
return user.Level > 1;
}
return false;
}
public bool Check(int userid)
{
User user;
if(GetUser(userid,out user))
{
return user.Level > 1;
}
return false;
}
//方法1
public static string ConvertQuot1(string html)
{
return html.Replace(""", "\"").Replace(""", "\"");
}
readonly static Regex ReplaceQuot = new Regex("&(quot|#34);", RegexOptions.IgnoreCase | RegexOptions.Compiled);
//方法2
public static string ConvertQuot2(string html)
{
return ReplaceQuot.Replace(html, "\"");
}
//方法1
public static string ConvertQuot1(string html)
{
return html.Replace("0", "").Replace("1", "").Replace("2", "").Replace("3", "").Replace("4", "").Replace("5", "").Replace("6","").Replace("7", "").Replace("8", "").Replace("9", "");
}
readonly static Regex ReplaceQuot = new Regex("[1234567890]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
//方法2
public static string ConvertQuot2(string html)
{
return ReplaceQuot.Replace(html, "");
}
Htmlstring = Regex.Replace(Htmlstring, @"]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"
文章标题:C#程序员应该养成的程序性能优化写法
文章链接:http://soscw.com/index.php/essay/97202.html