什么是编译器优化的限制?它有多聪明?

时间:2012-04-06 02:41:34

标签: optimization compiler-construction

人们不断告诉我,而不是写“向左移1位”,只写“2乘2”,因为它更具可读性,编译将足够聪明,可以进行优化。

通常会编译什么,开发人员不应该这样做(代码可读性)?我总是写string.length == 0而不是string == ""因为我读了5到6年前的某个地方,说数字运算要快得多。这仍然是真的吗?

或者,大多数编译器都足够聪明以转换以下内容:

int result = 0; for (int i = 0; i <= 100; i++) { result += i; }

进入:int result = 5050;

你最喜欢的“优化”是什么,因为大多数编译不会做?

1 个答案:

答案 0 :(得分:5)

算法:到目前为止,地球上没有编译器可以为您选择更好的算法。太多人在他们进行基准测试后匆匆跳到了重写C部分,当他们应该真正考虑替换他们首先使用的算法时。