RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 /* 00002 * 00003 * Created on 21 sept. 2005 00004 * 00005 */ 00006 package zephyr.plugin.core.api.synchronization; 00007 00008 public class Chrono { 00009 private long creationTime; 00010 00011 public Chrono() { 00012 start(); 00013 } 00014 00015 public Chrono(long creationTime) { 00016 start(creationTime); 00017 } 00018 00019 public void start() { 00020 start(System.nanoTime()); 00021 } 00022 00023 public void start(long creationTime) { 00024 this.creationTime = creationTime; 00025 } 00026 00027 public long getCurrentNano() { 00028 return System.nanoTime() - creationTime; 00029 } 00030 00031 public long getCurrentMillis() { 00032 return getCurrentNano() / 1000000; 00033 } 00034 00035 public double getCurrentChrono() { 00036 return getCurrentNano() / 1000000000.0; 00037 } 00038 00039 @Override 00040 public String toString() { 00041 return toStringMillis(getCurrentMillis()); 00042 } 00043 00044 public static String toStringMillis(long millisTime) { 00045 if (millisTime < 1000) 00046 return String.valueOf(millisTime) + "ms"; 00047 int seconds = (int) (millisTime / 1000.0); 00048 int hours = seconds / 3600; 00049 seconds = seconds - hours * 3600; 00050 int minutes = seconds / 60; 00051 seconds = seconds - minutes * 60; 00052 StringBuilder result = new StringBuilder(); 00053 if (hours != 0) 00054 result.append(hours + "h"); 00055 if (minutes != 0) 00056 result.append(minutes + "m"); 00057 result.append(seconds + "s"); 00058 return result.toString(); 00059 } 00060 00061 public static String toPeriodString(long periodNano) { 00062 if (periodNano < 1000000) 00063 return "0." + String.valueOf(periodNano / 1000) + "ms"; 00064 if (periodNano < 1000000000) 00065 return String.valueOf(periodNano / 1000000) + "ms"; 00066 return String.valueOf(periodNano / 1000000000) + "s"; 00067 } 00068 00069 static public long longTimeAgo() { 00070 return System.nanoTime() - ((long) 365 * (long) 24 * 3600 * 1000000000); 00071 } 00072 }