当前位置: 首页 > news >正文

商城网站需要多少空间wordpress做微信登录页面

商城网站需要多少空间,wordpress做微信登录页面,中国建设银行中国网站,石家庄网站建设套最近写了几篇《c#扩展方法奇思妙用》的文章#xff0c;一直只是讨论如何扩展、如何使用的问题#xff0c;几乎没有涉及效率方面。而大家的回复好多都在问效率如何、性能怎样#xff0c;也引起了我对效率的关注#xff0c;今天将初步测试的结果发出来#xff0c;大家一起探…最近写了几篇《c#扩展方法奇思妙用》的文章一直只是讨论如何扩展、如何使用的问题几乎没有涉及效率方面。而大家的回复好多都在问效率如何、性能怎样也引起了我对效率的关注今天将初步测试的结果发出来大家一起探讨一下。以前没太写过性能测试的代码上网找了一下说可以用Stopwatch进行计时比较准确。Stopwatch使用比较简单几个方法从名字上就知道用用途Reset(计时清零)、Start(开始计时)、Stop(停止计时)属性ElapsedMilliseconds就是执行操作所用的毫秒数。为了简化测试让更多人看明白我们这是对IsNullOrEmpty扩展进行测试它只是简单调用string.IsNullOrEmpty静态方法。但为了让我们的测试更有趣一些我们再加上两个相同功能的方法一个是IsNullOrEmpty的手工实现版称为手工方法另外一个用lambda表达式写的。一共是如下三个方法与string.IsNullOrEmpty称为“原方法”比较  1         //扩展方法 2         public static bool IsNullOrEmpty1(this string s) 3         { 4             return string.IsNullOrEmpty(s); 5         } 6         //手工方法 7         public static bool IsNullOrEmpty2(string s) 8         { 9             return s  null || s  string.Empty;10         }11         //lambda方法12         public static Funcstring, bool IsNullOrEmpty3  s  string.IsNullOrEmpty(s); 我们在函数名后面添加上一个数字将它们区分开以避免相互混淆。为了测试公正尽量消除测试中的误差我们采用一个数组存放要测试的字符串。这个数组中存放三种字符串非Empty非Null、Empty、Null。随机存入数量大致相同。生成算法如下:  1         private static string[] GetTestStringArray(int count) 2         { 3             string[] result  new string[count]; 4             Random random  new Random(); 5  6             int r  0; 7             for (int i  0; i  count; i) 8             { 9                 r  random.Next(3);10                 if (r  0) result[i]  i.ToString();11                 else if (r  1) result[i]  string.Empty;12                 else result[i]  null;13             }14             return result;15         } 我们让这四个算法前面三个算法原来的静态算法依次对数组中的每一项进行判断。有一点要特别注意对集合遍历也要耗时我们要排除这段时间。下面给出测试算法写的不好别见笑  1public static void Test() 2{ 3    int count  10000000;                                 //7个零 4    string[] ss  GetTestStringArray(count);  //测试字符串Array 5    bool b; 6    string str; 7 8    long t  0;    //基本循环时间 9    long t0  0;    //原方法时间10    long t1  0;    //扩展方法时间11    long t2  0;    //手工方法时间12    long t3  0;    //lambda时间1314    Stopwatch watch  new Stopwatch();15    for (int i  0; i  10; i)    //循环测试10次16    {17        watch.Reset(); watch.Start();18        foreach (string s in ss) str  s;19        watch.Stop();20        Console.Write(基本循环  watch.ElapsedMilliseconds  ms\t\t\t\t);21        t  watch.ElapsedMilliseconds;2223        watch.Reset(); watch.Start();24        foreach (string s in ss) { str  s; b  string.IsNullOrEmpty(str); }25        watch.Stop();26        Console.Write(原方法  watch.ElapsedMilliseconds  ms\t\t);27        t0  watch.ElapsedMilliseconds;2829        watch.Reset(); watch.Start();30        foreach (string s in ss) { str  s; b  str.IsNullOrEmpty1(); }31        watch.Stop();32        Console.Write(扩展方法  watch.ElapsedMilliseconds  ms\t\t);33        t1  watch.ElapsedMilliseconds;3435        watch.Reset(); watch.Start();36        foreach (string s in ss) { str  s; b  IsNullOrEmpty2(str); }37        watch.Stop();38        Console.Write(手工方法  watch.ElapsedMilliseconds  ms\t\t);39        t2  watch.ElapsedMilliseconds;4041        watch.Reset(); watch.Start();42        foreach (string s in ss) { str  s; b  IsNullOrEmpty3(str); }43        watch.Stop();44        Console.Write(lambda方法  watch.ElapsedMilliseconds  ms\t\t);45        t3  watch.ElapsedMilliseconds;4647        Console.WriteLine();48    }4950    Console.WriteLine();5152    Console.WriteLine(string.Format(扩展方法\t / 原方法\t  {0:f2}, (t1 - t) * 1.0 / (t0 - t)));53    Console.WriteLine(string.Format(手工方法\t / 原方法\t  {0:f2}, (t2 - t) * 1.0 / (t0 - t)));54    Console.WriteLine(string.Format(lambda方法\t / 原方法\t  {0:f2}, (t3 - t) * 1.0 / (t0 - t)));55}56 想重构一下考虑了几种办法不太好怕重构后大家看起来更费力。Test中的4个小段代码很相似分别用来测量4个算法的用时。 1     foreach (string s in ss) str  s; 上面这句代码是基本循环后面三组代码都在它基础上加入相应操作。Test()不复杂就是太啰嗦大家都看得明白。先在Debug模式下执行测试后面三个方法效率也太低了吧且一放再看Release模式比前面效率提高了一些。最后是把Release模式下生成的程序放在命令行中执行说明一项目的输出类型必需是“控制台应用程序”才能在控制台中输出。说明二控制台的宽度比较小我删除了Test()中输出中的几个制表符等才让它输入不换行。说明三本处执行的是Release模式生成的程序而不是Debug模式生成的程序。Debug和Release测试是在VS2008宿主中进行的最后控制台测试才是真正的实际运行环境我们测试结果以控制台测试结果为准。之所以将前面两个贴出来是告诉大家在vs中调试测试的结果是相当不准确的。我们来分析下测试的结果吧1.扩展方法的效率是相当高的与原方法只有百分之几多运行几次可能是1、3、4甚至0还有一次是-2即比值为0.98的性能损失。2.手工方法效率最低低得出乎大多数人的意料。3.lambda会带来“可观”的性能损失。如果考虑性能可以使用扩展方法但扩展方法内部不要使用lambda表达式其内部尽量使用常规代码。其实扩展方法内部代码简洁与否无所谓毕竟扩展方法是一种封装可以将内部复杂的操作隐藏起来并以一个简单的扩展方法提供给调用者如果考虑性能少用lambda多用原生方法。感觉这次测试的结果令我倍感意外确实没想到扩展方法的效率如此之高看来我的扩展想法有市场了期望本人是“粗人”很不细心大家如果发现上面测试中有错误请马上告知我谢谢打算对一个扩展方法的测试说服力不够以后会再做一些相关测试工作。感慨效率的高低不是眼睛看看、脑子想想能断定的而必需采用科学的测试方法才可以给出结论。讨论如果本文只给出在debug及release下的测试结果会是怎样的呢本人系列文章《c#扩展方法奇思妙用》敬请关注转载于:https://www.cnblogs.com/China-Dragon/archive/2010/05/12/1733503.html
http://www.yutouwan.com/news/212276/

相关文章:

  • 河西做网站的公司网站建设相关的博客有哪些
  • 权威做网站的公司微信扫码登记小程序
  • 汽修网站怎么做冯耀宗seo视频教程
  • 网站维护是不是很难做今天济南刚刚发生的新闻
  • 图片网站收录tradekey外贸平台官网
  • 建设银行北京分行网站邯郸建设局网站资质申报
  • 网站建设新闻中心呼和浩特网站推广公司
  • 免费cms建站系统有哪些学院网站设计模板
  • 福州seo推广优化杭州百度人工优化
  • 工信部网站 备案时间dtcms网站开发教程
  • 做电子商务网站免费的行情网站ifind是
  • 宁波市住房与城乡建设部网站如何零基础做网站
  • 网页设计公司建网站网站设计苏州公司网站建设找哪家
  • 网站建设晋icp备如何做亚马逊备案的网站
  • 腾讯空间个人认证 企业认证 网站认证哪种功能用途最齐全??游戏软件开发流程
  • 山东淄博网站建设微信公众号网站建设费
  • 注册的网站医疗网站咨询源码
  • 舟山建设网站公司微信小程序怎么关闭防沉迷
  • 十堰微网站建设多少钱网页设计模板html代码用户评论
  • 做票据业务的p2p网站北京网站建设公司分享网站改版注意事项
  • 内蒙古住房和城乡建设厅网站 工程建设管理把做的网站发布打万维网上
  • 企业网站seo方案最近军事新闻大事
  • 毕业设计 建设网站网站建设岗位风险防控
  • 南京专业网站制作免费下载代码的网站
  • 公司高端网站设计公司临海市建设规划局网站
  • 在线免费看电视剧的网站网站建设服务有哪些
  • 门户网站静态页面软件公司主要做哪些
  • 定陶住房和城乡建设局网站怎么实现网站注册页面
  • 有哪些网站的搜索引擎网站301如何做
  • 汽车手机网站制作性价比高的域名备案加急