AMI面試主管真是佛心來著 - 面試

Table of Contents

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不符合某些業界的習慣,造成團隊效率降低我承認,
我並非有業界經驗的人,他們可以對新人這樣要求,或說即戰力不高,
但以此評價新人的長期能力則會失準

--

All Comments

Kelly avatarKelly2013-01-15
我剛用gcc試了一下,兩種寫法翻出來的ASM是一樣的
Kristin avatarKristin2013-01-19
這樣犧牲可讀性的寫法真的有比較好? 我也寫過MCU,也知道
Jacky avatarJacky2013-01-20
可能是我搞錯啦~只是不曉得原原PO有沒有驗證過到底省多少?
Puput avatarPuput2013-01-24
是說對組語不熟,當初怎麼評斷這樣效率有沒有比較好?
Hazel avatarHazel2013-01-26
P2是奇數的話,應該左邊比較快.中間就直接ret了.
而且不是奇數當然就是偶數..幹嘛判斷兩次..
Rachel avatarRachel2013-01-27
是說左邊應該不需要第2個if吧 P2&1 不是0就是1 else就好了..
Lily avatarLily2013-01-31
樓上無誤..
Bennie avatarBennie2013-02-03
結論...原PO的code跑更慢~~~~~~~~~~~~~~~~~~~~~~~~
Emily avatarEmily2013-02-06
除非你能肯定沒有更好的寫法,不然有時候compiler
本身的優化是更好的
Ivy avatarIvy2013-02-07
其實大家在這過程中都進步了 原PO還是給了大家討論的發展空間
Dora avatarDora2013-02-08
只不過比面試主管多懂一個冷門又不實用的寫法 就上來酸他
Puput avatarPuput2013-02-11
你的code反而跑得更慢, 而且又難看! 有很了不起嗎?
Gilbert avatarGilbert2013-02-12
我不認同AMI主管講話方式,不過TechJob焦點本來就是在求職
你現在在這邊喊焦點是在程式寫法..不是白說的嗎...
Joe avatarJoe2013-02-13
所以一個是沒看過的寫法就先全盤否認,一個是用一些冷僻用法
上來討拍(然後這寫法也沒比較好)...
Harry avatarHarry2013-02-17
那主管應該很久沒面試了,很多公司喜歡出這樣的題目考人XD
Jessica avatarJessica2013-02-17
不過原PO也學到不用%取餘數的方法,大家開心就好啦XD
Zora avatarZora2013-02-19
要是我是主管,不用%取餘得到的分數會比原PO的寫法來的高
Anonymous avatarAnonymous2013-02-19
不同CPU架構的compiler會有差異, 你覺得效能好的寫法在
某些cpu上不見得試用, 而且現在的cpu有很多偷吃步的作法
Frederic avatarFrederic2013-02-21
像是superscalar pipeline.. 所以我覺得你一直在爭論哪
一種方式才是最佳解很沒意義,要看CPU架構採取不同的方式
Tracy avatarTracy2013-02-24
而且可讀性/軟體軟體架構我覺得才是日後發展的關鍵
"適用", 筆誤
Zenobia avatarZenobia2013-02-26
樓上也是正解 不保證快 保證難懂 根本沒價值
Caitlin avatarCaitlin2013-02-26
而且光是你會用%來判斷奇偶數這點,就已經不是效能的保證
Sarah avatarSarah2013-02-27
樓上突破盲點了 說老實話我才被點醒 原PO懂了沒?
Queena avatarQueena2013-03-02
原PO去查怎麼判斷奇偶數更快吧 效能可能差到百倍千倍
Caitlin avatarCaitlin2013-03-06
那你的方法好在哪裡? ^_^ 再來 MOD的速度問題解決了?
Iris avatarIris2013-03-10
那是編譯器聰明,跟你沒有關係XD
Jacky avatarJacky2013-03-12
說難聽點,光用%做運算就會讓人質疑你有沒有寫過mcu
Xanthe avatarXanthe2013-03-13
你拿語法出來說嘴只會讓閱聽者覺得是在炫技
Jacob avatarJacob2013-03-17
如果你面試題目都做對再來跟主管討論語法
Leila avatarLeila2013-03-20
才會讓人覺得你有點credit~~
Xanthe avatarXanthe2013-03-24
不想對剛畢業的人說重話,但是你的態度還真讓人不敢恭維
Jack avatarJack2013-03-28
會完全一樣是因為Keil C的compiler幫你做掉了
Catherine avatarCatherine2013-04-01
可以參考instruction set的JNB指令
http://tinyurl.com/cuwzg7x
Isabella avatarIsabella2013-04-04
但不能保證每種cpu core的指令集都支援類似的指令
Bethany avatarBethany2013-04-08
像是x86, ARM, PowerPC, mips,每家都會有自己的應用
Quintina avatarQuintina2013-04-10
有興趣可以去看看ARM的application note, 裡面有一些文
Emily avatarEmily2013-04-14
件就是有特別說明對於ARM架構來說, 用除法方式來做計算
的缺點, 當然如果你覺得現代的compiler技術很聰明,不需
John avatarJohn2013-04-17
我們開發時格外小心~ 那我也沒話說, 鬼打牆到此為止 XD
Agnes avatarAgnes2013-04-21
我只能說演算法/架構才是一切的基礎, coding style是可
Quintina avatarQuintina2013-04-23
以方便後續開發人員參與討論或trace code的方式
Ethan avatarEthan2013-04-24
而且我想你既然都把asm秀出來做比較, 很明顯就是編譯器
Carol avatarCarol2013-04-26
本來就會做一些最佳化的動作,那還不如寫得易懂有條理
Barb Cronin avatarBarb Cronin2013-04-27
我想大家的重點是在這裡, 而不是硬要定你對語法的敏銳度
Ivy avatarIvy2013-04-27
現在的軟體開發不管是大型系統或是小型的SoC,整個架構都
Barb Cronin avatarBarb Cronin2013-04-30
很複雜, 分工也很細,不是每個人對語法的進階技巧都熟悉
Caroline avatarCaroline2013-05-02
否則也不會有一堆公司強調SW必遵守Coding Convention
Dinah avatarDinah2013-05-03
你先試試看optmiztion關掉,再看看後面會不會跑
Liam avatarLiam2013-05-07
難道我會return EFI_SUCCESS;也要拿來說嘴?????
Olive avatarOlive2013-05-08
Keil跑得起來很了不起嗎? 萬一遇到別家的編譯器編不過時呢?
Hazel avatarHazel2013-05-09
不要在"最佳化"上面打轉,AMI的考題就助教大人您自評應該
Christine avatarChristine2013-05-12
應該能夠得幾分啊?
Daniel avatarDaniel2013-05-15
樓上大大 他不會用&1判斷奇偶數 談效能根本差很遠
Belly avatarBelly2013-05-20
@@" 不就是看最後一位是啥就好了啊?
Hamiltion avatarHamiltion2013-05-21
還有一個方法是shift後看carry就好了
Tristan Cohan avatarTristan Cohan2013-05-24
結果那個主管要叫你在去嗎~~ ?
Zanna avatarZanna2013-05-27
()&& !()&& 事實上是兩個if, 不能拿if-else if做比較, asm
一定會不一樣的