大年初三哩,可惜还要忙活下,真羡慕大家出去走走串门呀!今天敲的代码不是if判断就是switch判断,郁闷三。这微软搞出个if为虾米还再弄出个switch三,听着外边鞭炮声、欢笑声,心已远去,遂小试了下。
private const int count = 999999;//比较次数
protected void Page_Load(object sender, EventArgs e)
{
TestIf(3);
Response.Write("</br>");
TestSwitch(3);
}
/// <summary>
/// 测试执行if判断count次所消耗时间
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
private long TestIf(int param)
{
long i = 0;
Stopwatch sw = new Stopwatch();//System.Diagnostics.Stopwatch该类用于准确地测量运行时间
sw.Start();
for (int j = 0; j < count; j++)
{
if (param == 1)
i += 1;
else if (param == 2)
i += 2;
else if (param == 3)
i += 3;
}
sw.Stop();
Response.Write("采用If判断执行" + count.ToString() + "次消耗的时间是: " + sw.ElapsedMilliseconds.ToString() + "毫秒");
return i;
}
/// <summary>
/// 测试执行switch判断count次所消耗时间
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
private long TestSwitch(int param)
{
long i = 0;
Stopwatch sw = new Stopwatch();
sw.Start();
for (int j = 0; j < count; j++)
{
switch (param)
{
case 1:
i += 1;
break;
case 2:
i += 2;
break;
case 3:
i += 3;
break;
}
}
sw.Stop();
Response.Write("采用switch判断执行" + count.ToString() + "次消耗的时间是: " + sw.ElapsedMilliseconds.ToString() + "毫秒");
return i;
}
来看看俺地测试结果,比较来看性能上还是有些差距地,建议以后还是多用switch判断吧。
|
三分支判断 |
六分支判断 |
九分支判断 | |||
判断次数 |
if |
switch |
if |
switch |
if |
switch |
999999 |
6毫秒 |
5毫秒 |
6毫秒 |
5毫秒 |
6毫秒 |
5毫秒 |
9999999 |
62毫秒 |
54毫秒 |
67毫秒 |
54毫秒 |
65毫秒 |
57毫秒 |
99999999 |
637毫秒 |
558毫秒 |
682毫秒 |
548毫秒 |
713毫秒 |
569毫秒 |
999999999 |
6391毫秒 |
5534毫秒 |
6833毫秒 |
5539毫秒 |
6685毫秒 |
5542毫秒 |