From: Holger Z. <hz...@us...> - 2005-07-01 14:11:10
|
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); } } |