[問題] 面試遇到的程式問題,現在還想不出來(MTK)

看板Programming作者 (冬天了)時間17年前 (2007/12/30 05:56), 編輯推噓17(17020)
留言37則, 13人參與, 最新討論串1/12 (看更多)
※ [本文轉錄自 Tech_Job 看板] 作者: asleepme (冬天了) 看板: Tech_Job 標題: [問題] 面試遇到的程式問題,現在還想不出來... 時間: Sun Dec 30 13:42:09 2007 是當面問的 不過他當初是這樣講的: 有一個for迴圈,從0加到100 可是我覺得他不夠快,要怎樣才能讓他更快 for( i=0; i<=100; i++) s=s+i; 不可以用數學公式 請忽略宣告或初始化的問題,我想不是重點 因為我當初把i=0改成i=1的時候他只是無言的笑了笑 請指點 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.82.90

12/30 13:45,
可以請問是哪家公司問的嗎?
12/30 13:45

12/30 13:47,
換快一點的clock....哈 開個玩笑
12/30 13:47

12/30 13:49,
++i
12/30 13:49

12/30 13:49,
這是高斯的國小數學老師問的嗎?? @.@
12/30 13:49

12/30 13:50,
用遞迴??
12/30 13:50

12/30 13:51,
改成迴圈做十次,一圈做十個加法/
12/30 13:51

12/30 13:52,
我講一下可能大家會認真點,MTK
12/30 13:52

12/30 13:53,
請問++i跟i++為什麼在速度上會有差?
12/30 13:53

12/30 13:53,
parallel programming?
12/30 13:53

12/30 13:53,
遞迴會更慢吧...
12/30 13:53

12/30 13:54,
把迴圈展開?
12/30 13:54

12/30 13:54,
平行計算喔,我不太懂耶,可以解釋清楚點嗎?
12/30 13:54

12/30 13:55,
bxxl這也是滿特別的,我一直覺得他是要加速迴圈效果
12/30 13:55
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.82.90

12/30 14:26, , 1F
基本的加快就是把迴圈展開為普通循序程式
12/30 14:26, 1F

12/30 15:37, , 2F
+改用|吧... |跟+是等價的, 但是快一點
12/30 15:37, 2F

12/30 17:36, , 3F
這是要問SIMD嗎??
12/30 17:36, 3F

12/30 17:53, , 4F
|與+不等價,|不處理算術進位
12/30 17:53, 4F

12/30 19:49, , 5F
答案應該是 (上底+下底)*高/2
12/30 19:49, 5F

12/30 19:51, , 6F
可是好像不能用數學公式 = ="
12/30 19:51, 6F

12/30 20:03, , 7F
用 i += 1 應該會比較快
12/30 20:03, 7F

12/30 20:03, , 8F
i++ 和 ++i 都比較慢些
12/30 20:03, 8F

12/30 20:40, , 9F
loop unroll吧... 另外應該改成+=會比較快
12/30 20:40, 9F

12/30 20:58, , 10F
為什麼改成+=會比較快呢?
12/30 20:58, 10F

12/30 20:58, , 11F
我印象裡面++i是用INC 只要1 cycle
12/30 20:58, 11F

12/30 22:01, , 12F
+=1的話最後compile出來也是INC吧
12/30 22:01, 12F

12/30 23:01, , 13F
++i s+=i
12/30 23:01, 13F

12/31 00:44, , 14F
在基本型別下s=s+i最佳化時會變s+=i
12/31 00:44, 14F

12/31 03:20, , 15F
剛剛才在C/C++版推過~ XD
12/31 03:20, 15F

12/31 10:49, , 16F
哈哈 跟MasterChange講的一樣
12/31 10:49, 16F

12/31 10:49, , 17F
這題對組合語言不熟真的答不出來
12/31 10:49, 17F

12/31 19:25, , 18F
這題是考這個嗎 - -"
12/31 19:25, 18F

12/31 19:25, , 19F
本來用了 compiler 就不該去預期出來的組
12/31 19:25, 19F

12/31 19:26, , 20F
語是什麼吧? 如果這樣甘脆用 asm{} 算了?
12/31 19:26, 20F

12/31 19:50, , 21F
應該這麼說,看各人情況;如果所做最佳化動作
12/31 19:50, 21F

12/31 19:52, , 22F
在不做的情況只用編譯參數最佳化即可達成,
12/31 19:52, 22F

12/31 19:52, , 23F
不如不要談那麼多了
12/31 19:52, 23F

12/31 19:54, , 24F
該談的是在編譯參數調整不到的地方,討論程式
12/31 19:54, 24F

12/31 19:54, , 25F
這樣寫比那樣寫好,才有意義
12/31 19:54, 25F

12/31 21:49, , 26F
同意樓上的
12/31 21:49, 26F

01/01 01:43, , 27F
除了公式解,其實沒有真正的好方法...
01/01 01:43, 27F

01/01 01:46, , 28F
就算改用內嵌asm..也不一定比compiler好啊
01/01 01:46, 28F

01/01 08:50, , 29F
++i與i++, 如果i是整數且單獨運算的話
01/01 08:50, 29F

01/01 08:51, , 30F
是完全一模一樣的東西...
01/01 08:51, 30F

01/01 08:51, , 31F
complier針對P5/P6優化都會變成inc
01/01 08:51, 31F

01/01 08:52, , 32F
針對P7優化會變成 add xxx,1
01/01 08:52, 32F

01/02 07:00, , 33F
誰都知道0~100連加用公式解較快,這
01/02 07:00, 33F

01/02 07:01, , 34F
題考的並不是真的0加到100,專注在連
01/02 07:01, 34F

01/02 07:02, , 35F
加可能會搞錯方向...
01/02 07:02, 35F

01/02 13:00, , 36F
其實我真的看不出來這個面試官想要問什麼
01/02 13:00, 36F

01/02 18:20, , 37F
就跟你說不能用公式了,答案竟然是用公式 :p
01/02 18:20, 37F
文章代碼(AID): #17TpCVfp (Programming)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 12 篇):
文章代碼(AID): #17TpCVfp (Programming)