diff options
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/com/jogamp/common/os/Clock.java | 19 | ||||
-rw-r--r-- | src/java/com/jogamp/common/os/Platform.java | 18 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/TSPrinter.java | 95 |
3 files changed, 129 insertions, 3 deletions
diff --git a/src/java/com/jogamp/common/os/Clock.java b/src/java/com/jogamp/common/os/Clock.java index 9380442..8e9f99d 100644 --- a/src/java/com/jogamp/common/os/Clock.java +++ b/src/java/com/jogamp/common/os/Clock.java @@ -144,8 +144,23 @@ public class Clock { } /** - * Returns current monotonic time in milliseconds. - * + * Returns current monotonic milliseconds since start of this application. + * <p> + * Monotonic time shall be used for high-performance measurements of durations, + * since the underlying OS shall support fast calls. + * </p> + * @see #getMonotonicStartupTime() + * @see #currentNanos() + * @see #getMonotonicNanos() + */ + public static native long currentMillis(); + + /** + * Returns the unix based current monotonic time in milliseconds. + * <p> + * Monotonic time shall be used for high-performance measurements of durations, + * since the underlying OS shall support fast calls. + * </p> * @see #getMonotonicStartupTime() * @see #currentNanos() * @see #getMonotonicNanos() diff --git a/src/java/com/jogamp/common/os/Platform.java b/src/java/com/jogamp/common/os/Platform.java index ffea42c..206b7f8 100644 --- a/src/java/com/jogamp/common/os/Platform.java +++ b/src/java/com/jogamp/common/os/Platform.java @@ -521,7 +521,23 @@ public class Platform extends PlatformPropsImpl { // /** - * Returns the unix based current time in milliseconds, see {@link Clock#currentTimeMillis()}. + * Returns current monotonic milliseconds since start of this application. + * <p> + * Monotonic time shall be used for high-performance measurements of durations, + * since the underlying OS shall support fast calls. + * </p> + * @see Clock#currentMillis() + */ + public static long currentMillis() { + return Clock.currentMillis(); + } + + /** + * Returns the unix based current monotonic time in milliseconds. + * <p> + * Monotonic time shall be used for high-performance measurements of durations, + * since the underlying OS shall support fast calls. + * </p> * @see Clock#currentTimeMillis() */ public static long currentTimeMillis() { diff --git a/src/java/com/jogamp/common/util/TSPrinter.java b/src/java/com/jogamp/common/util/TSPrinter.java new file mode 100644 index 0000000..43b4f4f --- /dev/null +++ b/src/java/com/jogamp/common/util/TSPrinter.java @@ -0,0 +1,95 @@ +/** + * Author: Sven Gothel <[email protected]> + * Copyright (c) 2022-2023 Gothel Software e.K. + * Copyright (c) 2022-2023 JogAmp Community. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package com.jogamp.common.util; + +import java.io.PrintStream; + +import com.jogamp.common.os.Clock; + +/** A simple millisecond timestamp prepending `print*()` wrapper for a {@link PrintStream}. */ +public class TSPrinter { + private static TSPrinter err; + private static TSPrinter out; + + public static synchronized TSPrinter stderr() { + if( null == err ) { + err = new TSPrinter(System.err); + } + return err; + } + public static synchronized TSPrinter stdout() { + if( null == out ) { + out = new TSPrinter(System.out); + } + return out; + } + + private final PrintStream parent; + + public TSPrinter(final PrintStream parent) { + this.parent = parent; + } + + public static void printf(final PrintStream out, final long millis, final String format, final Object ... args) { + out.printf("[%,9d] ", millis); + out.printf(format, args); + } + public static void printf(final PrintStream out, final String format, final Object ... args) { + printf(out, Clock.currentMillis(), format, args); + } + public void printf(final long millis, final String format, final Object ... args) { + printf(parent, millis, format, args); + } + public void printf(final String format, final Object ... args) { + printf(parent, Clock.currentMillis(), format, args); + } + + public static void print(final PrintStream out, final long millis, final String msg) { + out.printf("[%,9d] %s", millis, msg); + } + public static void print(final PrintStream out, final String msg) { + print(out, Clock.currentMillis(), msg); + } + public void print(final long millis, final String msg) { + print(parent, millis, msg); + } + public void print(final String msg) { + print(parent, Clock.currentMillis(), msg); + } + + public static void println(final PrintStream out, final long millis, final String msg) { + out.printf("[%,9d] %s%n", millis, msg); + } + public static void println(final PrintStream out, final String msg) { + println(out, Clock.currentMillis(), msg); + } + public void println(final long millis, final String msg) { + println(parent, millis, msg); + } + public void println(final String msg) { + println(parent, Clock.currentMillis(), msg); + } + +} |