编译器优化 - 可变内存使用

时间:2016-06-30 18:34:58

标签: c++ memory-management compiler-optimization

当我在大多数情况下创建函数时,我在其中创建了很多变量,只是因为它更容易调试代码。

让我说我有这个功能:

void foo(int value) {
    int x = value * 1;
    int y = value * 2;
    int z = value * 3;

    int u = x + 1;
    int v = y + 2;
    int w = z + 3;
}

这段代码很好,很容易调试(你可以一步一步地看到发生了什么)但它使用了大量的内存(考虑到每个int是28字节是4个字节),它可能是以这种方式优化:

void foo(int value) {
    int u = value * 1 + 1;
    int v = value * 2 + 2;
    int w = value * 3 + 3;
}

基于此,我有一些问题:

  1. 编译器是否在发布版本中进行了这种优化?。
  2. 是否重用了函数中不再使用的变量的内存,以避免使用更多寄存器?

1 个答案:

答案 0 :(得分:3)

是。现代编译器将删除这些中间变量。是。现代编译器将折叠常量并重用寄存器和存储器位置。

总之;不要担心这个级别的东西,编译器会修复它。而是担心编写可读代码和算法改进并将详细信息留给编译器 - 这些天它非常聪明;)