bla*_*ank 1 compiler-optimization
根据Joel提到的最新播客的精神,他想要一些简单的问题以及可能有趣的答案......
在我们今天必须编程的环境中,我们不能依赖于langauage语句的执行顺序.真的吗?我们应该担心吗?
将30 GOTO 10总是10?*
*我没有故意使用20;)
[编辑]为四个人投票结束这个问题...
"运行时编译器使用分析信息来帮助优化正在编译的代码.允许JVM使用特定于执行的信息以产生更好的代码,这意味着一个程序中的编译方法M可能生成与编译M不同的代码.另一个"
(来自Java并发实践,2006,Goetz等)
..看看"单形呼叫转换"
[编辑]
和另一个编辑,你的处理器可以交换语句的执行顺序......
jal*_*alf 25
不,它不会.但它总会表现得像它一样.编译器设计的基本规则之一是"似乎"规则.你的编译器可以做它喜欢的任何变化,只要结果是要表现得好像你遵循了语言规则.
GOTO 10可以决定跳转到其他位置,只要编译器可以保证它不会改变程序的结果.
所以不,它不应该担心你.
Joa*_*uer 13
不是,如果你有
40 COMEFROM 30
Run Code Online (Sandbox Code Playgroud)
你代码中的某个地方.