Re: [面試] AMI面試主管真是佛心來著

作者: 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:00
P2是奇數的話,應該左邊比較快.中間就直接ret了.而且不是奇數當然就是偶數..幹嘛判斷兩次..
作者: patoo (完了完了 要變砲灰了 )   2013-01-12 10:11:00
是說左邊應該不需要第2個if吧 P2&1 不是0就是1 else就好了..
作者: comipa (綾崎若菜家御用)   2013-01-12 10:12:00
樓上無誤..
作者: lesam512 (鴻)   2013-01-12 10:13:00
結論...原PO的code跑更慢~~~~~~~~~~~~~~~~~~~~~~~~
作者: diabloevagto (wi)   2013-01-12 10:33:00
除非你能肯定沒有更好的寫法,不然有時候compiler本身的優化是更好的
作者: jlhc (H)   2013-01-12 10:58:00
其實大家在這過程中都進步了 原PO還是給了大家討論的發展空間
作者: lesam512 (鴻)   2013-01-12 11:09:00
只不過比面試主管多懂一個冷門又不實用的寫法 就上來酸他
作者: lesam512 (鴻)   2013-01-12 11:11:00
你的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的寫法來的高
作者: chester06 (chester)   2013-01-12 11:49:00
不同CPU架構的compiler會有差異, 你覺得效能好的寫法在某些cpu上不見得試用, 而且現在的cpu有很多偷吃步的作法
作者: chester06 (chester)   2013-01-12 11:50:00
像是superscalar pipeline.. 所以我覺得你一直在爭論哪一種方式才是最佳解很沒意義,要看CPU架構採取不同的方式
作者: chester06 (chester)   2013-01-12 11:51:00
而且可讀性/軟體軟體架構我覺得才是日後發展的關鍵"適用", 筆誤
作者: RealJustice (Nice to Meet You~)   2013-01-12 11:52:00
樓上也是正解 不保證快 保證難懂 根本沒價值
作者: chester06 (chester)   2013-01-12 11:53: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
不想對剛畢業的人說重話,但是你的態度還真讓人不敢恭維
作者: chester06 (chester)   2013-01-12 13:52:00
會完全一樣是因為Keil C的compiler幫你做掉了
作者: chester06 (chester)   2013-01-12 13:53:00
可以參考instruction set的JNB指令http://tinyurl.com/cuwzg7x
作者: chester06 (chester)   2013-01-12 13:54:00
但不能保證每種cpu core的指令集都支援類似的指令
作者: chester06 (chester)   2013-01-12 13:56:00
像是x86, ARM, PowerPC, mips,每家都會有自己的應用
作者: chester06 (chester)   2013-01-12 14:02:00
有興趣可以去看看ARM的application note, 裡面有一些文
作者: chester06 (chester)   2013-01-12 14:03:00
件就是有特別說明對於ARM架構來說, 用除法方式來做計算的缺點, 當然如果你覺得現代的compiler技術很聰明,不需
作者: chester06 (chester)   2013-01-12 14:04:00
我們開發時格外小心~ 那我也沒話說, 鬼打牆到此為止 XD
作者: chester06 (chester)   2013-01-12 14:08:00
我只能說演算法/架構才是一切的基礎, coding style是可
作者: chester06 (chester)   2013-01-12 14:09:00
以方便後續開發人員參與討論或trace code的方式
作者: chester06 (chester)   2013-01-12 14:10:00
而且我想你既然都把asm秀出來做比較, 很明顯就是編譯器
作者: chester06 (chester)   2013-01-12 14:11:00
本來就會做一些最佳化的動作,那還不如寫得易懂有條理
作者: chester06 (chester)   2013-01-12 14:12:00
我想大家的重點是在這裡, 而不是硬要定你對語法的敏銳度
作者: chester06 (chester)   2013-01-12 14:14:00
現在的軟體開發不管是大型系統或是小型的SoC,整個架構都
作者: chester06 (chester)   2013-01-12 14:15:00
很複雜, 分工也很細,不是每個人對語法的進階技巧都熟悉
作者: chester06 (chester)   2013-01-12 14:16:00
否則也不會有一堆公司強調SW必遵守Coding Convention
作者: bloodycat (布羅迪 凱特)   2013-01-13 07:51:00
你先試試看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判斷奇偶數 談效能根本差很遠
作者: mmonkeyboyy (great)   2013-01-14 16:52:00
@@" 不就是看最後一位是啥就好了啊?
作者: mmonkeyboyy (great)   2013-01-14 16:53:00
還有一個方法是shift後看carry就好了
作者: Gaak   2013-02-01 09:25:00
結果那個主管要叫你在去嗎~~ ?
作者: DeanMX   2013-03-22 00:38:00
()&& !()&& 事實上是兩個if, 不能拿if-else if做比較, asm一定會不一樣的

Links booklink

Contact Us: admin [ a t ] ucptt.com