Mega Code Archive

 
Categories / Java / Development Class
 

Class for program event timing

/*  * This code is free software; you can redistribute it and/or  * modify it under the terms of the GNU Lesser General Public   * License as published by the Free Software Foundation; either   * version 2.1 of the License, or (at your option) any later version.  *  * This code is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  * GNU Lesser General Public License for more details.  *  * You should have received a copy of the GNU Lesser General Public   * License along with this program; if not, write to the Free   * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,   * MA  02111-1307, USA.  */ //package no.geosoft.cc.util; import java.util.Date; /**  * Class for program event timing.  * Usage:  *  *   <pre>  *   Timer timer = new Timer();  *  *   // do stuff  *  *   System.out.println (timer);  // prints time elapsed since  *                                // object was created.  *   </pre>  *   * @author <a href="mailto:jacob.dreyer@geosoft.no">Jacob Dreyer</a>  */ public class Timer {   private Date  start_;         /**    * Start timer.    */   public Timer()   {     reset();   }      /**    * Returns exact number of milliseconds since timer was started.    *     * @return  Number of milliseconds since timer was started.    */   public long getTime()   {     Date now = new Date();     long nMillis = now.getTime() - start_.getTime();     return nMillis;   }      /**    * Restarts the timer.    */   public void reset()   {     start_ = new Date();  // now       }      /**    * Returns a formatted string showing the elaspsed time    * suince the instance was created.    *     * @return  Formatted time string.    */   public String toString()   {     long nMillis = getTime();          long nHours   = nMillis / 1000 / 60 / 60;     nMillis -= nHours * 1000 * 60 * 60;            long nMinutes = nMillis / 1000 / 60;     nMillis -= nMinutes * 1000  * 60;     long nSeconds = nMillis / 1000;     nMillis -= nSeconds * 1000;          StringBuffer time = new StringBuffer();     if (nHours > 0) time.append (nHours + ":");     if (nHours > 0 && nMinutes < 10) time.append ("0");     time.append (nMinutes + ":");     if (nSeconds < 10) time.append ("0");     time.append (nSeconds);     time.append (".");     if (nMillis < 100) time.append ("0");     if (nMillis <  10) time.append ("0");     time.append (nMillis);          return time.toString();   }      /**    * Testing this class.    *     * @param args  Not used.    */   public static void main (String[] args)   {     Timer timer = new Timer();     for (int i = 0; i < 100000000; i++) {       double b = 998.43678;       double c = Math.sqrt (b);     }     System.out.println (timer);   } }