当我在大多数情况下创建函数时,我在其中创建了很多变量,只是因为它更容易调试代码。
让我说我有这个功能:
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;
}
基于此,我有一些问题:
答案 0 :(得分:3)
是。现代编译器将删除这些中间变量。是。现代编译器将折叠常量并重用寄存器和存储器位置。
总之;不要担心这个级别的东西,编译器会修复它。而是担心编写可读代码和算法改进并将详细信息留给编译器 - 这些天它非常聪明;)