mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-10-31 07:39:42 +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