前言:我们在写代码的时候总会使用到比较两个变量,使用的久了,也就习以为常,最近一直在关注性能优化方面的东西,今天将目光放在变量比较上面。
常用的比较方法有: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,有兴趣的同学可以自行百度下
文中有什么不对的地方,或者有什么建议,请大神们提出。
浙公网安备 33010602011771号