Java Cookbook-Date and Times

6.12 Measuring Elapsed Time

  --Problem

    You need to time how long long it takes to do something

  --Solution

    Call System.currentTimeMillis() twice,or System.nanoTime(),and subtract the first

    ressult from the second result

  --Discussion

    The System class contains two static methods for times.currentTimeMillis() return the current time (since 1970) in milliseconds,and nanoTime()

  (new in 1.5) returns the relative time in nanoseconds.To time some event use this:

 

 long start=System.currentTimeMillis();
  method_to_be_timed();

  long end=System.currentTimeMillis();

  long elapsed=end-start;//time in milliseconds

  or:

  long start=System.nanoTime();

  method_to_be_timed();

  long end=System.nanoTime();

  long elapsed=end-start;//time in nanoseconds

  Here is a short example to measure how long it takes a user to press return.

We divide the time in milliseconds by 1000 to get seconds

and print it nicely using a NumberFormat

  long t0,t1;

  System.out.println("Press return when ready");
  
  t1=System.currentTimeMillis();

  int b;

do{

  b=System.in.read();

}while(b!=‘\r‘&&b!=‘\n‘);

  t1=System.currrentTimeMillis();

  double deltaT=t1-t0;

  System.out.println(DecimalFormat.getInstance().format(deltaT/1000.)+"seconds.");

 

 import java.io.*;

 import java.text.*;

  /**

   * Timer for processing sqrt and I/O operations

   */

  public class TimerCompution{

    public static void man(String[] args){

      try{

        new Timer().run();
    }catch(IOException e){System.err.println(e);}
  } 

  public void run()throws IOException{

    DataInputStream n=new DataOutputStream(

      new BufferedOutputStream(new FileOutputStream(SysDep.getDevNull()));
      long t0,t1;
      System.out.println("Java Starts at "+(t0=System.currentTimeMillis()));

      double k;
      for(int i=0;i<100000;i++){

        k=2.1*Math.sqrt((dobule)i);
        n.writeDouble(k);
      }

     System.out.println("Java Ends at "+(t1=System.currentTimeMillis()));
     double deltaT=t1-t0;
     System.out.println("This run took "+
       DecimalFormat.getInstance().format(deltaT/1000.)+" seconds.");
 }   
}

  

时间: 2024-10-01 18:03:45

Java Cookbook-Date and Times的相关文章

Java API —— Date类

1.Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). public Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数. 3.成员方法 public long getTime() public void setTime(long

java 常用Date操作

[java] view plain copy 获取年月日时分秒: [java] view plain copy package com.util; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; public class Test { public void getTimeByDate(){ Date date = new Date(); DateFormat df1 = DateFor

【java】获取当前日期时间:java.util.Date

1 public class TestDate { 2 public static void main(String[] args) { 3 System.out.println(new java.util.Date()); 4 } 5 } 运行结果:Fri Apr 07 21:56:24 CST 2017

【java】Date与String之间的转换:java.text.SimpleDateFormat、public Date parse(String source) throws ParseException和public final String format(Date date)

1 package 日期日历类; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 7 public class TestDate { 8 public static void main(String[] args) { 9 Date date=new java.util.Date(); 10 System.out.println(date);/

java类Date类概述及其方法

1.Date类概述 类Date表示特定的瞬间,精确到毫秒 2.构造方法 public Date() public Date(long date) 3.成员方法 public long getTime() public void setTime(long time) package com; import java.util.Date; /**  * Date类概述  *  Date类表示特定的瞬间,精确到毫秒  *   * 构造方法  *  public Date()  *  public Da

Java中Date类型与String类型互转

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /**      * String 转Date      */     public static Date stringToDate(String str){         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java基础--java.util.Date类型小结

首先先来了解一下Date数据类型: . Date类型通常要和另一个 java.text.SimpleDateFormat类联合使用. 把long-->Date: public Date(long date);  Date类的构造函数可以直接将long数据类型转为Date类型 把Date-->long: public long getTime();Date类的一个方法,可以得到对应的long型.这种转换最大的使用环境就是在java.sql中的以上三个子类. 如果获取当前时间的long类型,可以直

java中Date类型的一些操作

一.日期的比较 1.直接 用getTime 方法 时间的毫秒数比较 if(date.getTime() < start.getTime()) { return String.valueOf(Long.parseLong(year)-1); } else { return year; } 2. Date实现了Comparable接口,直接使用compareTo方法比较就ok if(date.compareTo(start) < 0) { return String.valueOf(Long.pa

java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数. 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间.分钟.秒和毫

java.util.Date和java.sql.Date的区别和相互转化

java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分它们都有getTime方法返回毫秒数,自然就可以直接构建. java.util.Date 是 java.sql.Date 的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他,后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java