楼主:
deo2000 (800IM)
2013-01-12 09:49:59推 askacis:我刚用gcc试了一下,两种写法翻出来的ASM是一样的 01/12 02:36
→ askacis:这样牺牲可读性的写法真的有比较好? 我也写过MCU,也知道 01/12 02:37
→ askacis:可能是我搞错啦~只是不晓得原原PO有没有验证过到底省多少? 01/12 02:51
用 keil 3 编出来的组语,如果只有 if(叙述式) V.S. (叙述式)&& 的确一样。
但是我当初的状况,其实是要对N为奇数或偶数,做不同运算,
所以我比较 “if-else if” V.S. “()&& !()&&”两种语法的组语
后者虽然少一行,但我对组语不熟,也不敢99.9%说少这一行就比较快,
所以贴上来让大家公评,如果后者没比较快,我就为此事道歉
code compare
http://i.imgur.com/pHv26.png
如果要说后者code style不符合某些业界的习惯,造成团队效率降低我承认,
我并非有业界经验的人,他们可以对新人这样要求,或说即战力不高,
但以此评价新人的长期能力则会失准
作者:
Kaeze (HaFa Adai)
2013-01-12 09:54:00是说对组语不熟,当初怎么评断这样效率有没有比较好?
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 10:09:00P2是奇数的话,应该左边比较快.中间就直接ret了.而且不是奇数当然就是偶数..干嘛判断两次..
作者:
patoo (完了完了 要变砲灰了 )
2013-01-12 10:11:00是说左边应该不需要第2个if吧 P2&1 不是0就是1 else就好了..
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 10:12:00楼上无误..
结论...原PO的code跑更慢~~~~~~~~~~~~~~~~~~~~~~~~
除非你能肯定没有更好的写法,不然有时候compiler本身的优化是更好的
作者:
jlhc (H)
2013-01-12 10:58:00其实大家在这过程中都进步了 原PO还是给了大家讨论的发展空间
只不过比面试主管多懂一个冷门又不实用的写法 就上来酸他
你的code反而跑得更慢, 而且又难看! 有很了不起吗?
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 11:17:00我不认同AMI主管讲话方式,不过TechJob焦点本来就是在求职你现在在这边喊焦点是在程式写法..不是白说的吗...
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 11:26:00所以一个是没看过的写法就先全盘否认,一个是用一些冷僻用法上来讨拍(然后这写法也没比较好)...
作者:
askacis (ASKA)
2013-01-12 11:38:00那主管应该很久没面试了,很多公司喜欢出这样的题目考人XD
作者:
askacis (ASKA)
2013-01-12 11:41:00不过原PO也学到不用%取余数的方法,大家开心就好啦XD
作者:
askacis (ASKA)
2013-01-12 11:46:00要是我是主管,不用%取余得到的分数会比原PO的写法来的高
不同CPU架构的compiler会有差异, 你觉得效能好的写法在某些cpu上不见得试用, 而且现在的cpu有很多偷吃步的作法
像是superscalar pipeline.. 所以我觉得你一直在争论哪一种方式才是最佳解很没意义,要看CPU架构采取不同的方式
而且可读性/软件软件架构我觉得才是日后发展的关键"适用", 笔误
作者:
RealJustice (Nice to Meet You~)
2013-01-12 11:52:00楼上也是正解 不保证快 保证难懂 根本没价值
而且光是你会用%来判断奇偶数这点,就已经不是效能的保证
作者:
RealJustice (Nice to Meet You~)
2013-01-12 11:56:00楼上突破盲点了 说老实话我才被点醒 原PO懂了没?
作者:
RealJustice (Nice to Meet You~)
2013-01-12 11:58:00原PO去查怎么判断奇偶数更快吧 效能可能差到百倍千倍
作者:
RealJustice (Nice to Meet You~)
2013-01-12 12:41:00那你的方法好在哪里? ^_^ 再来 MOD的速度问题解决了?
作者:
askacis (ASKA)
2013-01-12 13:17:00那是编译器聪明,跟你没有关系XD
作者:
askacis (ASKA)
2013-01-12 13:19:00说难听点,光用%做运算就会让人质疑你有没有写过mcu
作者:
askacis (ASKA)
2013-01-12 13:20:00你拿语法出来说嘴只会让阅听者觉得是在炫技
作者:
askacis (ASKA)
2013-01-12 13:22:00如果你面试题目都做对再来跟主管讨论语法
作者:
askacis (ASKA)
2013-01-12 13:23:00才会让人觉得你有点credit~~
作者:
askacis (ASKA)
2013-01-12 13:25:00不想对刚毕业的人说重话,但是你的态度还真让人不敢恭维
会完全一样是因为Keil C的compiler帮你做掉了
但不能保证每种cpu core的指令集都支援类似的指令
像是x86, ARM, PowerPC, mips,每家都会有自己的应用
有兴趣可以去看看ARM的application note, 里面有一些文
件就是有特别说明对于ARM架构来说, 用除法方式来做计算的缺点, 当然如果你觉得现代的compiler技术很聪明,不需
我们开发时格外小心~ 那我也没话说, 鬼打墙到此为止 XD
我只能说算法/架构才是一切的基础, coding style是可
以方便后续开发人员参与讨论或trace code的方式
而且我想你既然都把asm秀出来做比较, 很明显就是编译器
本来就会做一些最佳化的动作,那还不如写得易懂有条理
我想大家的重点是在这里, 而不是硬要定你对语法的敏锐度
现在的软件开发不管是大型系统或是小型的SoC,整个架构都
很复杂, 分工也很细,不是每个人对语法的进阶技巧都熟悉
否则也不会有一堆公司强调SW必遵守Coding Convention
你先试试看optmiztion关掉,再看看后面会不会跑
作者:
hahafox (Andy)
2013-01-13 22:47:00难道我会return EFI_SUCCESS;也要拿来说嘴?????
作者: WPC001 (好闷, 迷惘~~) 2013-01-13 23:31:00
Keil跑得起来很了不起吗? 万一遇到别家的编译器编不过时呢?
作者:
ccd1006 (吸血鬼)
2013-01-14 00:02:00不要在"最佳化"上面打转,AMI的考题就助教大人您自评应该
作者:
ccd1006 (吸血鬼)
2013-01-14 00:03:00应该能够得几分啊?
作者:
RealJustice (Nice to Meet You~)
2013-01-14 07:50:00楼上大大 他不会用&1判断奇偶数 谈效能根本差很远
作者: Gaak 2013-02-01 09:25:00
结果那个主管要叫你在去吗~~ ?
作者: DeanMX 2013-03-22 00:38:00
()&& !()&& 事实上是两个if, 不能拿if-else if做比较, asm一定会不一样的