关与if与switch效率问题
写了个小的测试程序,不知道是否合乎逻辑,请高手指正
string a="asdfasdfasdf"; DateTime now = DateTime.Now; for (int i = 0; i < 100000000; i++) { if (a=="123456") { } else if (a == "asdfasdfasdf") { } } DateTime end1 = DateTime.Now; for (int i = 0; i < 100000000; i++) { switch (a) { case "123456": break; case "asdfasdfasdf": break; default: break; } } DateTime end2 = DateTime.Now; System.TimeSpan ifdiff = end1 - now; System.TimeSpan swithdiff = end2 - end1; MessageBox.Show(ifdiff.Milliseconds.ToString()+" "+swithdiff.Milliseconds.ToString());
watch.Start();
for (int i = 0; i < 10000000; i++)
{
if (a=="123456")
{ }
else if (a == "asdfasdfasdf")
{ }
}
watch.Stop();
Console.WriteLine(watch.ElapsedMilliseconds);
watch.Reset();
watch.Start();
for (int i = 0; i < 10000000; i++)
{
switch (a)
{
case "123456":
break;
case "asdfasdfasdf":
break;
default:
break;
}
}
watch.Stop();
Console.WriteLine(watch.ElapsedMilliseconds);
Console.Read();
[解决办法]