Java表达式优化

时间:2012-03-23 15:20:00

标签: java optimization

我的代码遍布整个地方(可能是20到30个实例):

<widget>.setVisible((condition == VIEW) || (condition == EDIT));

逻辑上我确实理解Java编译器应该并且可能会优化它以预先计算它并简单地使用计算的布尔值。

我的问题是有没有办法真正验证是否属实?

澄清

conditionprivate类成员,无法在构建之前修改它。

3 个答案:

答案 0 :(得分:1)

使用javap反汇编类文件,例如

javap -c com.example.ClassName

查看字节码源。但是为什么不通过提取到一个临时布尔变量来保证优化呢?

答案 1 :(得分:1)

  

有没有办法真正验证是否属实?

您可以尝试通过查看字节码反汇编,然后查看HotSpot生成的机器代码等来验证这一点。

然而,我认为这种策略很难充满。它也很脆弱,因为结果取决于编译器/ JVM以及condition的确切性质(它是本地的?类成员?finalvolatile?)

如果您因为性能原因而关心优化[1],我的建议是通过分解公共表达式来手动执行它。

[1]我假设您已经分析了代码,并且知道这是一个瓶颈。

答案 2 :(得分:0)

反汇编字节码。

也就是说,这些优化可以在运行时完成,可能取决于condition的声明,取决于条件的位置,等等。除了最简单的用例之外,追踪这种优化是非常重要的。