(1) 安全优化,编译器在进行优化的时候必须考虑所有的情况,只执行安全的优化。所以可能会限制很多可能的优化策略。 如果写出上面这样的代码,当xp==yp的时候,最后的结果等于0。否则xp和yp指向的对象进行了一次交换。由于有两种可能的情况,限制了编译器可能进行的优化. 另外函数的调用改变了全局变量也可能造成优化限制。使用内联函数可能可以避免这种限制,有些编译器在较高的优化级别也可能会进行内联函数替换的优化。 (2)利用代码移动进行