Update of /cvsroot/jake2/jake2/src/jake2/sys
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26140/src/jake2/sys
Added Files:
NanoTimer.java StandardTimer.java HighPrecisionTimer.java
Timer.java
Log Message:
different Timers implementing Milliseconds()
--- NEW FILE: HighPrecisionTimer.java ---
/*
* HighPrecisionTimer.java
* Copyright (C) 2005
*
* $Id: HighPrecisionTimer.java,v 1.1 2005/07/01 14:11:00 hzi Exp $
*/
package jake2.sys;
import sun.misc.Perf;
class HighPrecisionTimer extends Timer {
private Perf perf = Perf.getPerf();
private double f = 1000.0 / perf.highResFrequency();
private long base;
HighPrecisionTimer() {
base = perf.highResCounter();
}
public long currentTimeMillis() {
long time = perf.highResCounter();
long delta = time - base;
if (delta < 0) {
delta += Long.MAX_VALUE + 1;
}
return (long)(delta * f);
}
}
--- NEW FILE: Timer.java ---
/*
* Timer.java
* Copyright (C) 2005
*
* $Id: Timer.java,v 1.1 2005/07/01 14:11:01 hzi Exp $
*/
package jake2.sys;
import jake2.Globals;
public abstract class Timer {
abstract public long currentTimeMillis();
private static long time = 0;
static Timer t;
static {
try {
t = new NanoTimer();
} catch (Throwable e) {
try {
t = new HighPrecisionTimer();
} catch (Throwable e1) {
t = new StandardTimer();
}
}
System.out.println("using " + t.getClass().getName());
}
public static int Milliseconds() {
return Globals.curtime = (int)(t.currentTimeMillis());
}
}
--- NEW FILE: StandardTimer.java ---
/*
* StandardTimer.java
* Copyright (C) 2005
*
* $Id: StandardTimer.java,v 1.1 2005/07/01 14:11:00 hzi Exp $
*/
package jake2.sys;
class StandardTimer extends Timer {
private long base;
StandardTimer() {
base = System.currentTimeMillis();
}
public long currentTimeMillis() {
long time = System.currentTimeMillis();
long delta = time - base;
if (delta < 0) {
delta += Long.MAX_VALUE + 1;
}
return delta;
}
}
--- NEW FILE: NanoTimer.java ---
/*
* NanoTimer.java
* Copyright (C) 2005
*
* $Id: NanoTimer.java,v 1.1 2005/07/01 14:11:00 hzi Exp $
*/
package jake2.sys;
public class NanoTimer extends Timer {
private long base;
NanoTimer() {
base = System.nanoTime();
}
public long currentTimeMillis() {
long time = System.nanoTime();
long delta = time - base;
if (delta < 0) {
delta += Long.MAX_VALUE + 1;
}
return (long)(delta * 0.000001);
}
}
|