@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
42 lines (40 loc) • 3.47 kB
JavaScript
class Timer {
/**
* 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));
}
}
export { Timer as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZXIuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9UaW1lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRpbWVyL1BlcmZvcm1hbmNlIG1lYXN1cmVtZW50IHV0aWxpdHkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVyIHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3RhcnQgdGltZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXJ0VGltZTogW251bWJlciwgbnVtYmVyXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBlbmQgdGltZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVuZFRpbWU6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgdGltZXIuXG4gICAgICovXG4gICAgcHVibGljIHJlc2V0KCkge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHByb2Nlc3MuaHJ0aW1lKCk7XG4gICAgICAgIHRoaXMuZW5kVGltZSA9IHVuZGVmaW5lZCE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcCB0aGUgdGltZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgdG90YWwgZHVyYXRpb24gaW4gbXMgYXMgYSBgZmxvYXRgXG4gICAgICovXG4gICAgcHVibGljIHN0b3AoKTogbnVtYmVyIHtcbiAgICAgICAgdGhpcy5lbmRUaW1lID0gcHJvY2Vzcy5ocnRpbWUodGhpcy5zdGFydFRpbWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFJlc3VsdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgdG90YWwgZHVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgdG90YWwgZHVyYXRpb24gaW4gbXMgYXMgYSBgZmxvYXRgXG4gICAgICovXG4gICAgcHVibGljIGdldFJlc3VsdCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuZW5kVGltZSkgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBzdG9wIHRoZSB0aW1lciBiZWZvcmUgZ2V0dGluZyB0aGUgcmVzdWx0LmApO1xuXG4gICAgICAgIHJldHVybiBOdW1iZXIucGFyc2VGbG9hdCgoKHRoaXMuZW5kVGltZVswXSAqIDFlOSArIHRoaXMuZW5kVGltZVsxXSkgLyAxXzAwMF8wMDApLnRvRml4ZWQoMykpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFxQixLQUFNLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlmLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQUE7QUFBQSxFQUVELFdBQWMsR0FBQTtBQUNqQixJQUFLLElBQUEsQ0FBQSxTQUFBLEdBQVksUUFBUSxNQUFPLEVBQUE7QUFBQTtBQUNwQztBQUFBO0FBQUE7QUFBQSxFQUtPLEtBQVEsR0FBQTtBQUNYLElBQUssSUFBQSxDQUFBLFNBQUEsR0FBWSxRQUFRLE1BQU8sRUFBQTtBQUNoQyxJQUFBLElBQUEsQ0FBSyxPQUFVLEdBQUEsS0FBQSxDQUFBO0FBQUE7QUFDbkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sSUFBZSxHQUFBO0FBQ2xCLElBQUEsSUFBQSxDQUFLLE9BQVUsR0FBQSxPQUFBLENBQVEsTUFBTyxDQUFBLElBQUEsQ0FBSyxTQUFTLENBQUE7QUFFNUMsSUFBQSxPQUFPLEtBQUssU0FBVSxFQUFBO0FBQUE7QUFDMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sU0FBb0IsR0FBQTtBQUN2QixJQUFBLElBQUksQ0FBQyxJQUFLLENBQUEsT0FBQSxFQUFlLE1BQUEsSUFBSSxNQUFNLENBQXVELHFEQUFBLENBQUEsQ0FBQTtBQUUxRixJQUFBLE9BQU8sTUFBTyxDQUFBLFVBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSyxDQUFBLE9BQUEsQ0FBUSxDQUFDLENBQUksR0FBQSxHQUFBLEdBQU0sSUFBSyxDQUFBLE9BQUEsQ0FBUSxDQUFDLENBQUEsSUFBSyxHQUFXLEVBQUEsT0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0FBQUE7QUFFbkc7Ozs7In0=