大年初三哩,可惜还要忙活下,真羡慕大家出去走走串门呀!今天敲的代码不是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毫秒 |