根据我所读到的内容,我可以总结一下,
- Switch case 是实现定义的,但主要定义为跳转表
- 切换大小写使代码更具可读性
- 切换速度比
if/elseif
(?)
考虑一个例子,我有300+切换案例。我知道一个if/elseif
这场面将会是一片混乱。
但我想知道如何switch
案例执行于
这样的场景?
- Is it scalable即,无论存在多少个案例,它仍然比 if/else 相对更快?
- 既然是实施
定义了我怎样才能弄清楚我的编译器是如何实现它的?
- 最重要的是我该怎么做
if/elseif
- switch
除了实际编写代码和使用分析器之外的比较?我尝试过编译一个小.c
带有 switch case 的文件使用gcc 4.8.1
-S
切换,看起来好像创建了一个跳转表。我该去哪里?
- 使用更好/更差
if/elseif
在这种情况下
我主要对 C/C++ 的具体细节感兴趣
编译器可能会决定使用跳转表并在 300+ 的情况下做出巨大的改进。
编译器确实使用决策树等各种技术对分支进行优化。
编译器越容易理解代码就越好。而且 switch 语句对于编译器来说也更具可读性。
从编译器的角度考虑 else if。它看起来像一个箭头:
- if
- else
- else
- else
- else
您需要评估前面的每个 if 才能得到正确的 else 。
然而 Switch 看起来更像是一个块:
- case
- case
- case
- case
所以编译器有时可以直接决定去哪里。
对于您的项目符号问题:
它是可扩展的。开发人员很容易编写,如果编译器使用跳转表,添加更多情况也不会产生影响。
由编译器决定使用什么。它可能选择根本不优化它(但很可能是跳转表)。
您可以运行一个循环并手动测量时间吗?
使用 switch 总是更好。在最坏的情况下,开关将充当 if/else 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)