看板 C_and_CPP 關於我們 聯絡資訊
真的是有的沒的。 前陣子版上剛好不約而同有一個關於for最佳化的topic,又剛好前面有一個指標的 面試topic,突然讓我想到一件往事.... 補上文章編號 #1KV1lFA0 #1KVOvnwp http://blog.rayer.idv.tw/posts/245160-for-some-stupid-memories (blog裡面有一段可以讓你們拿來玩玩看的code 對了,這種「最佳化」行為其實是undefined behavior,只是絕大多數編譯器都 會有一樣的結果) 「誒某R,我把某段Code最佳化了,我把時間複雜度從O(n^2)降成O(n)」 「喔喔,這還真是滿大的突破,那段還滿吃緊的呢。你是怎麼做到的?」 「簡單啊,看我的code」 before : ``` for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++i) { process(target[i][j]); } ``` after : ``` for(int i = 0; i < m * n; ++i) { process(*((target*)(&target) + i)); } ``` 我整個下午都在一直在想,我應該要尻他腦袋尻多少下才能讓他醒過來,然後 下班時間就到了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.251.135 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1417585723.A.0EA.html
x000032001: 教他gcc -pg吧.. 12/03 13:55
※ 編輯: Killercat (59.124.251.135), 12/03/2014 13:57:35
walelile: 先尻在說 邊尻邊想 12/03 16:48
deo2000: process 還不是一樣要做m*n次 12/03 18:14
dirkc: 從O(mn)到O(mn)外加小蟲 12/03 18:16
Killercat: 這就是神奇思維,一個for是O(n) 兩個for是O(n^2) 12/03 18:28
Killercat: 不過這是我碰到最好笑的一次就是.... 12/03 18:29
yyan1218: XD 12/12 03:26