C#if-else vs-if或vs-switch case
我试图使我的代码更快,我得到了很多如果,如果,如果或在它。我知道,如果你得到5个以上的if/箱,开关箱速度会更快。那么,C#if-else vs-if或vs-switch case,c#,if-statement,case,C#,If Statement,Case,我试图使我的代码更快,我得到了很多如果,如果,如果或在它。我知道,如果你得到5个以上的if/箱,开关箱速度会更快。那么,if-else与if或的速度有多快,它们是一样的吗 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.Subs
if-else
与if或
的速度有多快,它们是一样的吗
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
}
或
还是我就拿着开关箱走
switch(item.Datum.Substring(5, 5))
{
case "06-20", "06,21":
Something
break;
case "06-22", "06,23":
Something
break;
}
在某些情况下,等效的switch语句比if语句或if语句链慢。使用频率启发法,您可以在许多程序中使用if语句优化快速路径 查看此链接,您将发现两种不同的比较
当这样一个问题出现时,我的哲学是:写得越少越好 为什么会有这样的哲学?一个词:可测试性。
每次添加行时,都必须确保其行为经过测试。我并不特别喜欢
开关
synthax,但当它将行号除以2时,我就选择它。我会选择:
dayStr = item.Datum.Substring(5, 5))
day = 'split '-', ',' and convert to int'
switch day:
{
case 20: // Fall through
case 21:
// Do something
case 22:
...
}
除此之外,不要多次调用
Substring
!如果你一天不调用这个函数,我会认为它是过早的优化。我打赌“某个东西”
“函数将花费比实现“case”开关节省的时间多得多的时间。您分析过您的代码吗?这真的是其性能的瓶颈吗?如果是的话,你有没有分析过替代方案?如果是这样的话,选择一个你测量过的性能最好的。
dayStr = item.Datum.Substring(5, 5))
day = 'split '-', ',' and convert to int'
switch day:
{
case 20: // Fall through
case 21:
// Do something
case 22:
...
}