constant folding 與 constant propagation

constant folding在大陸那邊翻譯成常量折疊,我是不知道台灣這邊翻譯成啥,constant propagation為常量傳播,這兩者為編譯器優化的技術,且為成對的,有folding就會有propagation,但是這是什麼意思呢?舉個例子吧:
const int i = 2 * 2;
當我們定義i為const,且值為2 * 2 = 4,編譯器會在編譯期就會做2 * 2 = 4,然而這個過程就叫做constant folding,之後就像巨集一樣,把i指定為4,在程式中遇到i就替代成4,這個過程就叫做constant propagation,所以基本上這個i是不會佔記憶體空間的。

也難怪C++ primer會說要用const來替代大部分的define了。

0 意見:

張貼留言