我试图让我的代码更快,我得到了很多If-else和if-or。我知道如果你有超过5个if / case,那么switch case会更快。那么if-else
与if-or
的速度有多快,它们是一样的吗?
if (item.Datum.Substring(5, 5) == "06-20" || item.Datum.Substring(5, 5) == "06-21")
{
Something
}
else if item.Datum.Substring(5, 5) == "06-22" || item.Datum.Substring(5, 5) == "06-23")
{
Something
}
OR
if (item.Datum.Substring(5, 5) == "06-20")
{
Something
}
else if (item.Datum.Substring(5, 5) == "06-21")
{
Something
}
else if (item.Datum.Substring(5, 5) == "06-22")
{
Something
}
else if (item.Datum.Substring(5, 5) == "06-23")
{
Something
}
或者我应该选择开关盒吗?
switch(item.Datum.Substring(5, 5))
{
case "06-20", "06,21":
Something
break;
case "06-22", "06,23":
Something
break;
}
答案 0 :(得分:1)
在某些情况下,等效的switch语句比if语句或if语句链慢。使用频率启发式算法,您可以在许多程序中使用if语句优化快速路径。
请参阅此链接,您将找到两种不同的比较
答案 1 :(得分:0)
当我提出这样一个问题时,我的理念是:你写的越少越好。
为何选择这样的理念?一个词:可测性。
每次添加一行时,都必须确保其行为已经过测试。我不像switch
synthax那样特别,但是当它将行号除以2时,我就把它拿走了。
答案 2 :(得分:0)
我会选择:
dayStr = item.Datum.Substring(5, 5))
day = 'split '-', ',' and convert to int'
switch day:
{
case 20: // Fall through
case 21:
// Do something
case 22:
...
}