编程实现从 1 加到 100 和从 100 加到 1 两个程序，哪个更快？为什么？
先给大家讲个笑话，翻译官和编译器的作用几乎是一模一样的，这个笑话用来说明实践中的操作和理论层面的操作可能有天壤之别，但我们不能用实践层面的结果去否定理论层面的知识。 ===== 老师可能希望考核的是学生理论层面对于汇编的理解（比如--比++性能高<见文中>，或者和0比较更快，或者纯饱力相加呢<见文末>？），但如果从严谨的角度来讲，应该提供一下具体的平台环境，比如X86，汇编或者Python3或者C下面。 ===== 我说一下实践层面： 确实是速度一样！ 在实践上，编译器就像上面那个翻译官一样：他直接出结果了： 几乎所有（平台）的编译器（静态）在对简单的加减乘除做编译的时候都会直接把结果算出来后直接编译进去，在运行的时候是直接的结果，根本没有计算。 比如你声明一个变量 a =  5 x 4，编译之后，代码中 直接就是 a = 20 ，在运行的时候根本不会去算你声明的这个乘法。 这里我用LLVM的中间码IR解释一下： 1加到100: LLVM生成的中间码是： 可以看到，编译器直接在编译阶段就算出了最终结果，你写了那么多，它直接返回结果！  再来看看： 100加到1: 它生成的IR码是： LLVM基于此生成的汇编也是一摸一样的： 所以从目前 实践 的真实运行的层面来看，编程  过后速度确确实实是： 一样快！ 不知道我这样有没有从实践的角度真实运行的角度解释清楚。 但就我个人而言，在现代CPU多级流水线指令（比如像skylake有4个ALU）这种模式下，我非常怀疑能够通过benchmark测得准确一致的结果，实际的结果有可能是有时候1到100快一点，有时候100到1快一点，也许只能在最简单的单片机上面去跑测试才能得出始终一致的结果，而且不能用高级语言的循环验证（也就是不能用++和--）。