前言:我们在写代码的时候总会使用到比较两个变量,使用的久了,也就习以为常,最近一直在关注性能优化方面的东西,今天将目光放在变量比较上面。

常用的比较方法有:1.逻辑判断(==) 2.Equals   3.compare

话不多说,直接上代码吧(为了能让差距明显一些,我做了100条数据的list)

main方法

static void Main(string[] args)
        {
            string str1 = "12545214521sdfasdfasdfa4sdf5a4sdf65as4df6a5sd4f6as5d4fa65sd4fa65sdf4a65sd4f5as6d4f999999999999999999999999999999999999asddddddddddddddddddddddddddddddd99999999999999999asdfaaaaaaaaaaaaaaaaaaaa";
            string str2 = "12545214521sdfasdfasdfa4sdf5a4sdf65as4df6a5sd4f6as5d4fa65sd4fa65sdf4a65sd4f5as6d4f999999999999999999999999999999999999asddddddddddddddddddddddddddddddd99999999999999999asdfaaaaaaaaaaaaaaaaaaaa";
            List<string> testStrList=new List<string>();
            for (int i = 0; i < 100; i++)
            {
                testStrList.Add(str1+i);
            }
            var comparesStr = str1 + 80;
            Stopwatch sw=new Stopwatch();
            Stopwatch sw2 = new Stopwatch();
            Stopwatch sw3 = new Stopwatch();
            Stopwatch sw4 = new Stopwatch();
            sw2.Start();
            //使用==来判断
            var exmaple2 = testStrList.Find(x => x == comparesStr);
            sw2.Stop();
            var denghaoUseTime = sw2.Elapsed;
            sw.Start();
            //使用equals
            var exmaple1 = testStrList.Find(x => x.Equals(comparesStr, StringComparison.Ordinal));
            sw.Stop();
            var strComparsionUseTime = sw.Elapsed;
            sw3.Start();
            //compare
            var exmple3 = testStrList.Find(x => string.Compare(x, comparesStr)==0);
            sw3.Stop();
            var compareUseTime = sw3.Elapsed;
            sw4.Start();
            //默认equals
            var exmaple4 = testStrList.Find(x => x.Equals(comparesStr));
            sw4.Stop();
            var equalUseTime = sw4.Elapsed;
            Console.WriteLine("==:"+ denghaoUseTime);
            Console.WriteLine("stringComparison:"+strComparsionUseTime);
            Console.WriteLine("compare:"+ compareUseTime);
            Console.WriteLine("equals:"+ equalUseTime);
            Console.ReadLine();
        }

 

     运行结果

从运行结果来看,==的效率最高,其次是 带区域限定的equals然后是equals的默认方法,最后是compare

==>equals>compare

就测试而言,结果如此。其中使用到 StringComparison,有兴趣的同学可以自行百度下

文中有什么不对的地方,或者有什么建议,请大神们提出。

 

posted on 2017-11-22 10:53  千城静流  阅读(332)  评论(0)    收藏  举报