PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[讨论] function pointer比switch和if有效率?
楼主:
Zoxge
(Zoxge)
2017-05-24 00:29:06
http://fred-zone.blogspot.tw/2008/07/c-switch.html
https://stackoverflow.com/questions/20906060/if-statement-vs-function-pointer
看到上面两篇文章
分别提到function pointerc会比使用switch case和if else效能更好
小弟是觉得function pointer可以让code变得较简洁
但能够达到效能更好的原因是什么呢?
作者:
james732
(好人超)
2017-05-24 00:34:00
我都把这种问题交给编译器大神
作者:
Schottky
(顺风相送)
2017-05-24 00:39:00
第一个中文网页也没反组译也没测速,是自己瞎猜的吧 XDD
作者:
loveflames
(咕啾咕啾魔法阵)
2017-05-24 00:41:00
还真的没听过,下面这个我倒是听过
作者:
Schottky
(顺风相送)
2017-05-24 00:41:00
同意一楼,最佳化交给 compiler 就好
作者:
loveflames
(咕啾咕啾魔法阵)
2017-05-24 00:42:00
函数参数传functor比传函数指标快
作者:
Schottky
(顺风相送)
2017-05-24 00:43:00
找出真正的效能瓶颈再去解决就好,不要把时间花在跑不了
作者:
Hazukashiine
(私は幸せです)
2017-05-24 00:44:00
Premature optimization is the root of all evil.
作者:
Schottky
(顺风相送)
2017-05-24 00:44:00
不要把时间花在最佳化一个每秒跑不到一万次的UI小功能上第一个作法来说,compiler 只要头壳没烧坏,switch-case本来就是用查表法 (table access) 来实作了,而且有专用的 CPU instruction 来做,我不相信他这做法有比较快第二个做法则是因为可以制造一种情况,切换/条件判断只在切换 checkbox 时做,而 loop 里面不用再做,只需要无脑呼叫,理论上在常常跑 loop 而很少切换时有帮助但实际上省不了多少时间,反而让程式变难读难维护
作者:
littleshan
(我要加入剑道社!)
2017-05-24 01:16:00
请仔细看 stackoverflow 的回答吧单层 if/switch 的情况通常都比 function pointer 快
作者:
boss0405
(boss)
2017-05-24 09:40:00
switch我记得compiler会建立多个label,第一次比较之后直接jmp,function pointer则需要push/pop的时间,不觉得会比较快
作者: LiloHuang (十年一刻)
2017-05-24 19:12:00
https://goo.gl/qKsfwD
compiler 通常满聪明的...
楼主:
Zoxge
(Zoxge)
2017-05-24 20:28:00
受教了,所以function pointer只是让code变简洁而已吗?@@
作者:
littleshan
(我要加入剑道社!)
2017-05-24 23:07:00
不,如果你只有简短的if或switch改用function pointer只是让程式看起来更难懂
作者:
descent
(“雄辩是银,沉默是金”)
2017-05-24 23:15:00
function pointer 用起来很爽, 看code很不爽
作者:
boss0405
(boss)
2017-05-24 23:52:00
function pointer在某些HAL相关程式很好用,例如可以根据不同硬件状况接到不同的function,而上层可以无感的使用,或是和structure结合做成一个结构阵列表单,可以自动根据代入的资讯跑相对应的function
作者:
tinlans
( )
2017-05-30 05:33:00
你最初设定 function pointer 的地方一定有 if 或 switch,如果不用 function pointer,每个呼叫点都要放 if 或switch,改程式的时候就知道死。
继续阅读
[问题] 8051 4bit倒数器 倒数问题
flameon5566
[问题] C++ utf8将日文字符存入数据库
rul3nk41
[问题] array out of bound的问题
hoshi1992
[问题] 无限循环中的变量比较
cliffchang2
[问题] 传空List进function,产生新List
Hyozero
Fw: [问答] 路由器转埠、虚拟服务器、DMZ、主机对话
hpyhacking
Re: [问题] 穷举法 未知数位置不定
pc118925
[问题] 新手质数问题
qoo55253
[问题] BCB使用COMPORT API后实体内存不断增加
a9113332708
Re: [问题] 穷举法 未知数位置不定
noodleT
Links
booklink
Contact Us: admin [ a t ] ucptt.com