@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
51 lines (50 loc) • 3.17 kB
JavaScript
;
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
//#region src/utils/Timer.ts
/**
* Timer/Performance measurement utility.
*/
var Timer = class {
/**
* The start time.
*/
startTime;
/**
* The end time.
*/
endTime;
constructor() {
this.startTime = process.hrtime();
}
/**
* Reset the timer.
*/
reset() {
this.startTime = process.hrtime();
this.endTime = void 0;
}
/**
* Stop the timer.
*
* @returns The total duration in ms as a `float`
*/
stop() {
this.endTime = process.hrtime(this.startTime);
return this.getResult();
}
/**
* Get the total duration.
*
* @returns The total duration in ms as a `float`
*/
getResult() {
if (!this.endTime) throw new Error(`You need to stop the timer before getting the result.`);
return Number.parseFloat(((this.endTime[0] * 1e9 + this.endTime[1]) / 1e6).toFixed(3));
}
};
//#endregion
exports.default = Timer;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZXIuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvVGltZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaW1lci9QZXJmb3JtYW5jZSBtZWFzdXJlbWVudCB1dGlsaXR5LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lciB7XG4gICAgLyoqXG4gICAgICogVGhlIHN0YXJ0IHRpbWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGFydFRpbWU6IFtudW1iZXIsIG51bWJlcl07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZW5kIHRpbWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBlbmRUaW1lOiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXQgdGhlIHRpbWVyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICB0aGlzLmVuZFRpbWUgPSB1bmRlZmluZWQhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0b3AgdGhlIHRpbWVyLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHRvdGFsIGR1cmF0aW9uIGluIG1zIGFzIGEgYGZsb2F0YFxuICAgICAqL1xuICAgIHB1YmxpYyBzdG9wKCk6IG51bWJlciB7XG4gICAgICAgIHRoaXMuZW5kVGltZSA9IHByb2Nlc3MuaHJ0aW1lKHRoaXMuc3RhcnRUaW1lKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRSZXN1bHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHRvdGFsIGR1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHRvdGFsIGR1cmF0aW9uIGluIG1zIGFzIGEgYGZsb2F0YFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSZXN1bHQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLmVuZFRpbWUpIHRocm93IG5ldyBFcnJvcihgWW91IG5lZWQgdG8gc3RvcCB0aGUgdGltZXIgYmVmb3JlIGdldHRpbmcgdGhlIHJlc3VsdC5gKTtcblxuICAgICAgICByZXR1cm4gTnVtYmVyLnBhcnNlRmxvYXQoKCh0aGlzLmVuZFRpbWVbMF0gKiAxZTkgKyB0aGlzLmVuZFRpbWVbMV0pIC8gMV8wMDBfMDAwKS50b0ZpeGVkKDMpKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQXFCLFFBQXJCLE1BQTJCOzs7O0NBSXZCOzs7O0NBS0E7Q0FFQSxjQUFxQjtFQUNqQixLQUFLLFlBQVksUUFBUSxPQUFPO0NBQ3BDOzs7O0NBS0EsUUFBZTtFQUNYLEtBQUssWUFBWSxRQUFRLE9BQU87RUFDaEMsS0FBSyxVQUFVLEtBQUE7Q0FDbkI7Ozs7OztDQU9BLE9BQXNCO0VBQ2xCLEtBQUssVUFBVSxRQUFRLE9BQU8sS0FBSyxTQUFTO0VBRTVDLE9BQU8sS0FBSyxVQUFVO0NBQzFCOzs7Ozs7Q0FPQSxZQUEyQjtFQUN2QixJQUFJLENBQUMsS0FBSyxTQUFTLE1BQU0sSUFBSSxNQUFNLHVEQUF1RDtFQUUxRixPQUFPLE9BQU8sYUFBYSxLQUFLLFFBQVEsS0FBSyxNQUFNLEtBQUssUUFBUSxNQUFNLEtBQVcsUUFBUSxDQUFDLENBQUM7Q0FDL0Y7QUFDSiJ9