java如何优化编译呢?

如下2段C#和java代码,C#默认用debug模式编译,速度和java用javac编译一样,执行20亿次浮点运算都用了10s,但如果C#用release模式编译,只用了3s,java有没有类似的优化呢?
(javac的选项我看了,好像都没有可以优化编译,网上也找不到相应信息)

C#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program{

static void Main(string[] args){
    double i = 0.0; double j = 0.0;
    System.DateTime currentTime = new System.DateTime();
    currentTime = System.DateTime.Now;
    System.Console.Write(currentTime);
    System.Console.Write("\n");
    for (i=0.0; i < 2000000000.0; i++) { j = i + j; }
    currentTime = System.DateTime.Now;
    System.Console.Write(currentTime);
    System.Console.Read();
}

}

java代码:
import java.util.Date;
import java.text.SimpleDateFormat;
public class a {

public static void main(String[] args) {
    double i=0.0,j=0.0;
    Date date = new Date();
    SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
    System.out.println(dateFormat.format(date));
    for(i=0.0;i<2000000000.0;i++){
        j=i+j;
    }
    Date date1 = new Date();
    SimpleDateFormat dateFormat1= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
    System.out.println(dateFormat1.format(date1));
}

}### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.9k
1 个回答

你说的这个应该是即时编译器的优化,而不是javac的优化,它只是将代码转为字节码,而字节码转机器码还会用到即时编译器(JIT),你可以看下相关知识,一般执行时间过长,会自动触发即时编译器的优化策略,理解JIT

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题