mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2025-01-12 02:40:39 +01:00
Added Profiler class
This commit is contained in:
parent
c30792f278
commit
40c7ef95e5
132
src/main/java/fr/xephi/authme/util/Profiler.java
Normal file
132
src/main/java/fr/xephi/authme/util/Profiler.java
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
package fr.xephi.authme.util;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
|
@SuppressWarnings("UnusedDeclaration")
|
||||||
|
public class Profiler {
|
||||||
|
|
||||||
|
/** Defines the past time in milliseconds. */
|
||||||
|
private long time = 0;
|
||||||
|
/** Defines the time in milliseconds the profiler last started at. */
|
||||||
|
private long start = -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor. This won't start the profiler immediately.
|
||||||
|
*/
|
||||||
|
public Profiler() {
|
||||||
|
this(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param start True to immediately start the profiler.
|
||||||
|
*/
|
||||||
|
public Profiler(boolean start) {
|
||||||
|
// Should the timer be started
|
||||||
|
if(start)
|
||||||
|
start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start the profiler.
|
||||||
|
*
|
||||||
|
* @return True if the profiler was started, false otherwise possibly due to an error.
|
||||||
|
* True will also be returned if the profiler was started already.
|
||||||
|
*/
|
||||||
|
public boolean start() {
|
||||||
|
// Make sure the timer isn't started already
|
||||||
|
if(isActive())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Set the start time
|
||||||
|
this.start = System.currentTimeMillis();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This will start the profiler if it's not active, or will stop the profiler if it's currently active.
|
||||||
|
*
|
||||||
|
* @return True if the profiler has been started, false if the profiler has been stopped.
|
||||||
|
*/
|
||||||
|
public boolean pause() {
|
||||||
|
// Toggle the profiler state
|
||||||
|
if(isStarted())
|
||||||
|
stop();
|
||||||
|
else
|
||||||
|
start();
|
||||||
|
|
||||||
|
// Return the result
|
||||||
|
return isStarted();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop the profiler if it's active.
|
||||||
|
*
|
||||||
|
* @return True will be returned if the profiler was stopped while it was active. False will be returned if the
|
||||||
|
* profiler was stopped already.
|
||||||
|
*/
|
||||||
|
public boolean stop() {
|
||||||
|
// Make sure the profiler is active
|
||||||
|
if(!isActive())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Stop the profiler, calculate the passed time
|
||||||
|
this.time += System.currentTimeMillis() - this.start;
|
||||||
|
this.start = -1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the profiler has been started. The profiler doesn't need to be active right now.
|
||||||
|
*
|
||||||
|
* @return True if the profiler was started, false otherwise.
|
||||||
|
*/
|
||||||
|
public boolean isStarted() {
|
||||||
|
return isActive() || this.time > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the profiler is currently active.
|
||||||
|
*
|
||||||
|
* @return True if the profiler is active, false otherwise.
|
||||||
|
*/
|
||||||
|
public boolean isActive() {
|
||||||
|
return this.start >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the passed time in milliseconds.
|
||||||
|
*
|
||||||
|
* @return The passed time in milliseconds.
|
||||||
|
*/
|
||||||
|
public long getTime() {
|
||||||
|
// Check whether the profiler is currently active
|
||||||
|
if(isActive())
|
||||||
|
return this.time + (System.currentTimeMillis() - this.start);
|
||||||
|
return this.time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the passed time in a formatted string.
|
||||||
|
*
|
||||||
|
* @return The passed time in a formatted string.
|
||||||
|
*/
|
||||||
|
public String getTimeFormatted() {
|
||||||
|
// Get the passed time
|
||||||
|
long time = getTime();
|
||||||
|
|
||||||
|
// Return the time if it's less than one millisecond
|
||||||
|
if(time <= 0)
|
||||||
|
return "<1 ms";
|
||||||
|
|
||||||
|
// Return the time in milliseconds
|
||||||
|
if(time < 1000)
|
||||||
|
return time + " ms";
|
||||||
|
|
||||||
|
// Convert the time into seconds with a single decimal
|
||||||
|
double timeSeconds = ((double) time) / 1000;
|
||||||
|
DecimalFormat df = new DecimalFormat("#0.0");
|
||||||
|
return df.format(timeSeconds) + " s";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user