java编译器优化

标签 java performance compiler-optimization

Java 编译器是否足够聪明,可以通过提取来优化下面的循环

Double average = new Double( totalTime / callCount ); 

跳出for循环?

public double computeSD( Set values, int callCount, long totalTime ) {
  double diffs = 0.0d; 
  for( Iterator i=values.iterator(); i.hasNext(); ) {
    double value = ( ( Double )i.next() ).doubleValue(); 
    Double average = new Double( totalTime / callCount ); 
    diffs += ( value – average.doubleValue() ) * ( value – average.doubleValue() );
  } 
  double variance = diffs / callCount;
  return Math.sqrt( variance );
}

最佳答案

没有什么可以阻止字节码编译器(java->字节码)执行优化。当我在赛门铁克工作时,他们做了一个 Java IDE,编译器编写人员确实考虑过对我们的编译器进行一些优化,但表示(外部世界)似乎没有人感兴趣,重点是即时 (JIT)编译器与现代 Sun VM 中的 HotSpot 大致相同。

没有什么可以阻止字节码编译器执行优化,但我不知道有任何这样做。人们非常关注运行时优化,但这些优化在运行时几乎是隐藏的。

因此,源代码->字节码编译器可能不会优化它,但虚拟机可能会优化它。如果您使用的是 Android 之类的设备,那么它可能不会执行运行时优化。

关于java编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2391219/

相关文章:

java - Stax 和 DOM 解析之间的性能差异

java - 响应式(Reactive)网络爬虫对同一域的并发请求有限

java - 启用 ssl 和 Elastic Beanstalk 的 Spring boot - 找不到文件

C中if语句的编译器优化

c - 嵌套结构元素取消引用的开销和编译器优化

java - 添加到 JLabel 方法?

javascript - Sencha Touch 2 - Android 性能

c# - 是什么导致了字符串连接时间的激增?

JavaScript: `if/else` 语句比中的条件语句更快吗?

C#/XNA - 乘法比除法快?