[讨论] 如果把省去所有函数呼叫的开销会快多少?

楼主: Hazukashiine (私は幸せです)   2016-09-29 17:05:02
以 (SGI) C++ STL std::list 的例子来说:
因为涉及很多对资料结构低阶的操作,所以实作上势必有很多内部函数的呼叫,
像是 protected: void transfer(...); 就是一个明显的例子,被反复呼叫很多次。
假使不在乎编译出来的执行档膨胀的问题的话,把执行的速度作为最高的原则,
那大家觉得如果把所有函式 inline ,能快上多少?快很多?还是一点点而已?
毕竟很多时候效能的瓶颈就卡在那个最底层的东西上面。
作者: Caesar08 (Caesar)   2016-09-29 17:17:00
来看Standard C++怎么说https://goo.gl/5QiT8y
楼主: Hazukashiine (私は幸せです)   2016-09-29 17:19:00
哈哈哈哈哈哈 我昨天就在看这个耶 !!!只是有点好奇 大家会怎么觉得 OwO
作者: Caesar08 (Caesar)   2016-09-29 17:20:00
那你就知道 你问的问题很难有正确答案了
楼主: Hazukashiine (私は幸せです)   2016-09-29 17:22:00
但是我已经快要有答案啦哈哈哈 因为我正实作一个完全没有函数呼叫开销的 linked list container正因为他们说不一定 所以才更想知道 如果做出来了到底是变快还是变慢 还是根本没影响
作者: Caesar08 (Caesar)   2016-09-29 17:28:00
gcc有__attribute__((always_inline))VC++有__forceinline。把这个加在他们实作的std::list就好了吧?
楼主: Hazukashiine (私は幸せです)   2016-09-29 17:37:00
那个还没试过 但是我想要用 C 语言去实作这样的东西
作者: pili100 (zelda)   2016-09-29 17:59:00
有实验精神
作者: uranusjr (←這人是超級笨蛋)   2016-09-29 18:31:00
现在 compiler 太聪明了, 看到 hotspot 自动就会 inline真想在 release build 测出效能差别还满难的
作者: chchwy (mat)   2016-09-29 22:23:00
把optimize开起来 那些函数几乎全部都被inline
作者: rodion (r-kan/reminder)   2016-09-30 10:11:00
不见得会变快 如果碰到膨胀的CODE导致cache miss的话
作者: LiloHuang (十年一刻)   2016-09-30 10:21:00
inline 影响速度的可能性很多 https://goo.gl/AWM8UN
楼主: Hazukashiine (私は幸せです)   2016-09-30 10:26:00
哈哈哈这是一楼附的链接啊 XDDD 默契
作者: LiloHuang (十年一刻)   2016-09-30 21:58:00
没留意到之前有人贴过,总之多做 code profiling

Links booklink

Contact Us: admin [ a t ] ucptt.com