→ Hazukashiine: 哈哈哈哈哈哈 我昨天就在看這個耶 !!! 09/29 17:19
→ Hazukashiine: 只是有點好奇 大家會怎麼覺得 OwO 09/29 17:20
→ Caesar08: 那你就知道 你問的問題很難有正確答案了 09/29 17:20
→ Hazukashiine: 但是我已經快要有答案啦哈哈哈 因為我正實作一個 09/29 17:22
→ Hazukashiine: 完全沒有函數呼叫開銷的 linked list container 09/29 17:22
→ Hazukashiine: 正因為他們說不一定 所以才更想知道 如果做出來了 09/29 17:24
→ Hazukashiine: 到底是變快還是變慢 還是根本沒影響 09/29 17:24
→ Caesar08: gcc有__attribute__((always_inline)) 09/29 17:28
→ Caesar08: VC++有__forceinline。把這個加在他們實作的std::list就 09/29 17:28
→ Caesar08: 好了吧? 09/29 17:29
→ Hazukashiine: 那個還沒試過 但是我想要用 C 語言去實作這樣的東西 09/29 17:37
推 pili100: 有實驗精神 09/29 17:59
void _M_transfer(_List_node_base* const __first, _List_node_base* const __last)
throw () __attribute__((always_inline));
剛剛把呼叫最多次的 _M_transfer 加上 compiler hint 一點效能改變都沒有
然後為了確定改的是正確的地方 偷偷把 attribute 拼錯 果然編譯失敗 XDDD
http://imgur.com/1OVjug5
我猜編譯器應該已經預設 inline 了吧(?
※ 編輯: Hazukashiine (140.113.66.155), 09/29/2016 18:13:42
→ uranusjr: 現在 compiler 太聰明了, 看到 hotspot 自動就會 inline 09/29 18:31
→ uranusjr: 真想在 release build 測出效能差別還滿難的 09/29 18:32
推 chchwy: 把optimize開起來 那些函數幾乎全部都被inline 09/29 22:23
→ rodion: 不見得會變快 如果碰到膨脹的CODE導致cache miss的話 09/30 10:11
→ Hazukashiine: 哈哈哈這是一樓附的鏈接啊 XDDD 默契 09/30 10:26
→ LiloHuang: 沒留意到之前有人貼過,總之多做 code profiling 09/30 21:58