请问各位高手
 我如何获取Java代码运行的时间???
 比如说
 下面一段程序        
StringBuffer sb=new StringBuffer(" ");
for(int i=0;i<100;++i){
sb=sb.append("+").append(i);
System.out.println(sb);
}我如何才能获取这段代码从初始化到运行结束的时间呢???
最好不要用IDE工具
我想要用代码实现让他显示运行时间....
谢谢了

解决方案 »

  1.   

    开始的时候取得时间,
    结束时再去的时间,相减不行吗?
    比如 long begin = new java.util.Date().getTime();
    StringBuffer sb=new StringBuffer(" ");
    for(int i=0;i<100;++i){
    sb=sb.append("+").append(i);
    System.out.println(sb);
    }
    long end = new java.util.Date().getTime();
    System.out.println(end - begin);这样的话,估计会输出1.
    多循环几次效果明显。
      

  2.   

     long before = new Date().getTime();
    //your code
     long after= new Date().getTime();
     long runTime=after-before;//单位为毫秒;
      

  3.   


    long startTime = 0;
    StringBuffer sb=new StringBuffer(" ");
    for(int i=0;i<100;++i){
    startTime = System.currentTimeMillis();
    sb=sb.append("+").append(i);
    System.out.println(sb);
    }
    System.out.println(System.currentTimeMillis() - startTime);
      

  4.   

    谢谢1楼和3楼的
      这种方法想过,但是觉得这样会有一定的误差,虽然误差小到我们发觉不到
      但是我是想了解Java虚拟机内部的运行机理才这样问的
      希望能的到更好的方法
      再次感谢1楼和3楼
      

  5.   


    StringBuffer sb=new StringBuffer(" ");
    long startTime = System.currentTimeMillis();
    for(int i=0;i<100;++i){
    sb=sb.append("+").append(i);
    System.out.println(sb);
    }
    System.out.println(System.currentTimeMillis() - startTime);
      

  6.   

    long startTime = 0;
    StringBuffer sb=new StringBuffer(" ");
    for(int i=0;i<100;++i){
    startTime = System.currentTimeMillis();
    sb=sb.append("+").append(i);
    System.out.println(sb);
    }
    System.out.println(System.currentTimeMillis() - startTime);
      

  7.   

    应该错了吧?????应该是下面的long startTime = System.currentTimeMillis();
    StringBuffer sb=new StringBuffer(" ");
    for(int i=0;i<100;++i){
    sb=sb.append("+").append(i);
    System.out.println(sb);
    }
    System.out.println(System.currentTimeMillis() - startTime);
      

  8.   


    StringBuffer sb=new StringBuffer(" ");
    long startTime = System.currentTimeMillis();
    for(int i=0;i<2000000;++i){
    sb=sb.append("+").append(i);
    System.out.println(sb);
    }
    long endTime = System.currentTimeMillis();
    System.out.println(endTime-startTime + "ms");
    不过将循环设置大一点,否则精确度不够。可以将循环设置的大一些,这样会更大的减小误差
    根据虚拟内存分配的大小设置,否则有可能会出现内存溢出
      

  9.   

    System.nanoTime(); 获取纳秒级