作者Killercat (殺人貓™)
看板C_and_CPP
標題[分享] 有的沒的(誒)
時間Wed Dec 3 13:48:40 2014
真的是有的沒的。
前陣子版上剛好不約而同有一個關於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