@universal-packages/time-measurer 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -29
- package/TimeMeasurer.d.ts +1 -15
- package/TimeMeasurer.js +1 -20
- package/TimeMeasurer.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/sleep.d.ts +1 -0
- package/sleep.js +1 -0
- package/sleep.js.map +1 -1
- package/startMeasurement.d.ts +2 -0
- package/startMeasurement.js +12 -0
- package/startMeasurement.js.map +1 -0
- package/singleton.d.ts +0 -3
- package/singleton.js +0 -17
- package/singleton.js.map +0 -1
package/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[](https://github.com/universal-packages/universal-time-measurer/actions/workflows/testing.yml)
|
4
4
|
[](https://codecov.io/gh/universal-packages/universal-time-measurer)
|
5
5
|
|
6
|
-
Time Measurer is a simple wrap for `process.hrtime` to measure time with procession and express that time easily through formatted representations, anytime you want to express how much a query or a request took at code level you may want to give this a try.
|
6
|
+
Time Measurer is a simple wrap for `process.hrtime.bigint` to measure time with procession and express that time easily through formatted representations, anytime you want to express how much a query or a request took at code level you may want to give this a try.
|
7
7
|
|
8
8
|
## Install
|
9
9
|
|
@@ -11,9 +11,29 @@ Time Measurer is a simple wrap for `process.hrtime` to measure time with process
|
|
11
11
|
npm install @universal-packages/time-measurer
|
12
12
|
```
|
13
13
|
|
14
|
+
## startMeasurement()
|
15
|
+
|
16
|
+
Creates a new TimeMeasurer instance to start a measurerment.
|
17
|
+
|
18
|
+
```ts
|
19
|
+
import { startMeasurement } from '@universal-packages/time-measurer'
|
20
|
+
|
21
|
+
async function getAll() {
|
22
|
+
const measurer = startMeasurement()
|
23
|
+
const data = await myDB.getAllRecords()
|
24
|
+
const measurement = measurer.finish()
|
25
|
+
|
26
|
+
console.log('All records - ', measurement.toString())
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
getAll()
|
31
|
+
// > All records - 2.23ms
|
32
|
+
```
|
33
|
+
|
14
34
|
## TimeMeasurer
|
15
35
|
|
16
|
-
Class `TimeMeasurer` provides an instantiable interface to start measuring time from any part of your code.
|
36
|
+
Class `TimeMeasurer` provides an instantiable interface to start measuring time from any part of your code. The measurement starts at instancing time.
|
17
37
|
|
18
38
|
```js
|
19
39
|
import TimeMeasurer from '@universal-packages/time-measurer'
|
@@ -21,15 +41,12 @@ import TimeMeasurer from '@universal-packages/time-measurer'
|
|
21
41
|
async function getAll() {
|
22
42
|
const measurer = new TimeMeasurer()
|
23
43
|
|
24
|
-
measurer.start()
|
25
|
-
|
26
44
|
const data = await myDB.getAllRecords()
|
27
45
|
const measurement = measurer.finish()
|
28
46
|
|
29
47
|
console.log('All records - ', measurement.toString())
|
30
48
|
}
|
31
49
|
|
32
|
-
|
33
50
|
getAll()
|
34
51
|
// > All records - 2.23ms
|
35
52
|
```
|
@@ -52,10 +69,10 @@ measurement.toString('Expressive')
|
|
52
69
|
You will get someting like
|
53
70
|
|
54
71
|
```
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
72
|
+
2hrs 35min 51.235sec
|
73
|
+
2:35:51.235
|
74
|
+
2hrs 35min 51.235sec
|
75
|
+
2 Hours, 35 Minutes, and 51.235 Seconds
|
59
76
|
```
|
60
77
|
|
61
78
|
It will take into account parts of the representation that are not contributing to the time, like if the measurement only took seconds, minutes and hours will not be included.
|
@@ -75,26 +92,6 @@ Get the time representation as a date object this can be helpful if you want to
|
|
75
92
|
measurement.toDate()
|
76
93
|
```
|
77
94
|
|
78
|
-
## Functional
|
79
|
-
|
80
|
-
A more simple way to use the time measurer API is by importing just the `start` and `finish` functions, the only disadvantage here is that you can only measure one thing at a time, unlike `TimeMeasurer` that can be instantiated multiple times and measurer several things useful when you have a lot of async tasks running.
|
81
|
-
|
82
|
-
```ts
|
83
|
-
import { start, finish } from '@universal-packages/time-measurer'
|
84
|
-
|
85
|
-
async function getAll() {
|
86
|
-
start()
|
87
|
-
const data = await myDB.getAllRecords()
|
88
|
-
const measurement = finish()
|
89
|
-
|
90
|
-
console.log('All records - ', measurement.toString())
|
91
|
-
}
|
92
|
-
|
93
|
-
|
94
|
-
getAll()
|
95
|
-
// > All records - 2.23ms
|
96
|
-
```
|
97
|
-
|
98
95
|
## Sleep
|
99
96
|
|
100
97
|
Time measurer ships with a convenient sleep function that takes a single parameter `time` in milliseconds, internally it is just a promise with a timeout that resolves it.
|
package/TimeMeasurer.d.ts
CHANGED
@@ -7,21 +7,7 @@ import Measurement from './Measurement';
|
|
7
7
|
*/
|
8
8
|
export default class TimeMeasurer {
|
9
9
|
private hrstart;
|
10
|
-
|
11
|
-
start(): void;
|
10
|
+
constructor();
|
12
11
|
/** Returns a measurement representing the time passed from when start wass colled */
|
13
12
|
finish(): Measurement;
|
14
|
-
/**
|
15
|
-
* Simple waitable timeout to sleep the process
|
16
|
-
*
|
17
|
-
* Example:
|
18
|
-
*
|
19
|
-
* ```ts
|
20
|
-
* // In milliseconds
|
21
|
-
* await TimeMeasurer.sleep(1000)
|
22
|
-
*
|
23
|
-
* ```
|
24
|
-
*
|
25
|
-
* */
|
26
|
-
static sleep(time: number): Promise<void>;
|
27
13
|
}
|
package/TimeMeasurer.js
CHANGED
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const Measurement_1 = __importDefault(require("./Measurement"));
|
7
|
-
const sleep_1 = __importDefault(require("./sleep"));
|
8
7
|
/**
|
9
8
|
*
|
10
9
|
* It meassures the time a process takes from the time start is called
|
@@ -12,32 +11,14 @@ const sleep_1 = __importDefault(require("./sleep"));
|
|
12
11
|
*
|
13
12
|
*/
|
14
13
|
class TimeMeasurer {
|
15
|
-
|
16
|
-
start() {
|
14
|
+
constructor() {
|
17
15
|
this.hrstart = process.hrtime.bigint();
|
18
16
|
}
|
19
17
|
/** Returns a measurement representing the time passed from when start wass colled */
|
20
18
|
finish() {
|
21
|
-
if (this.hrstart === undefined)
|
22
|
-
throw new Error('Time measurer finished without previously started');
|
23
19
|
const nanoseconds = process.hrtime.bigint() - this.hrstart;
|
24
20
|
return new Measurement_1.default(nanoseconds);
|
25
21
|
}
|
26
|
-
/**
|
27
|
-
* Simple waitable timeout to sleep the process
|
28
|
-
*
|
29
|
-
* Example:
|
30
|
-
*
|
31
|
-
* ```ts
|
32
|
-
* // In milliseconds
|
33
|
-
* await TimeMeasurer.sleep(1000)
|
34
|
-
*
|
35
|
-
* ```
|
36
|
-
*
|
37
|
-
* */
|
38
|
-
static async sleep(time) {
|
39
|
-
return (0, sleep_1.default)(time);
|
40
|
-
}
|
41
22
|
}
|
42
23
|
exports.default = TimeMeasurer;
|
43
24
|
//# sourceMappingURL=TimeMeasurer.js.map
|
package/TimeMeasurer.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TimeMeasurer.js","sourceRoot":"","sources":["../src/TimeMeasurer.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;
|
1
|
+
{"version":3,"file":"TimeMeasurer.js","sourceRoot":"","sources":["../src/TimeMeasurer.ts"],"names":[],"mappings":";;;;;AAAA,gEAAuC;AAEvC;;;;;GAKG;AACH,MAAqB,YAAY;IAG/B;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IACxC,CAAC;IAED,qFAAqF;IAC9E,MAAM;QACX,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAE1D,OAAO,IAAI,qBAAW,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;CACF;AAbD,+BAaC"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
@@ -25,5 +25,5 @@ Object.defineProperty(exports, "Measurement", { enumerable: true, get: function
|
|
25
25
|
__exportStar(require("./Measurement.types"), exports);
|
26
26
|
var sleep_1 = require("./sleep");
|
27
27
|
Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return __importDefault(sleep_1).default; } });
|
28
|
-
__exportStar(require("./
|
28
|
+
__exportStar(require("./startMeasurement"), exports);
|
29
29
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAA/B,wHAAA,OAAO,OAAA;AAChB,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,sDAAmC;AACnC,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AACzB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAA/B,wHAAA,OAAO,OAAA;AAChB,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,sDAAmC;AACnC,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AACzB,qDAAkC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@universal-packages/time-measurer",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.0",
|
4
4
|
"description": "Utility to measure routines times with precision",
|
5
5
|
"author": "David De Anda <david@universal-packages.com> (https://github.com/universal-packages)",
|
6
6
|
"license": "MIT",
|
package/sleep.d.ts
CHANGED
package/sleep.js
CHANGED
package/sleep.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":";;AAAA,mDAAmD;AACpC,KAAK,UAAU,KAAK,CAAC,IAAY;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAkB,EAAE,CAAC,UAAU,CAAC,GAAS,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;AAC1F,CAAC;AAFD,wBAEC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.startMeasurement = void 0;
|
7
|
+
const TimeMeasurer_1 = __importDefault(require("./TimeMeasurer"));
|
8
|
+
function startMeasurement() {
|
9
|
+
return new TimeMeasurer_1.default();
|
10
|
+
}
|
11
|
+
exports.startMeasurement = startMeasurement;
|
12
|
+
//# sourceMappingURL=startMeasurement.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"startMeasurement.js","sourceRoot":"","sources":["../src/startMeasurement.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAyC;AAEzC,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,sBAAY,EAAE,CAAA;AAC3B,CAAC;AAFD,4CAEC"}
|
package/singleton.d.ts
DELETED
package/singleton.js
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.finish = exports.start = void 0;
|
7
|
-
const TimeMeasurer_1 = __importDefault(require("./TimeMeasurer"));
|
8
|
-
const PROCESS_MEASURER = new TimeMeasurer_1.default();
|
9
|
-
function start() {
|
10
|
-
PROCESS_MEASURER.start();
|
11
|
-
}
|
12
|
-
exports.start = start;
|
13
|
-
function finish() {
|
14
|
-
return PROCESS_MEASURER.finish();
|
15
|
-
}
|
16
|
-
exports.finish = finish;
|
17
|
-
//# sourceMappingURL=singleton.js.map
|
package/singleton.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../src/singleton.ts"],"names":[],"mappings":";;;;;;AACA,kEAAyC;AAEzC,MAAM,gBAAgB,GAAG,IAAI,sBAAY,EAAE,CAAA;AAE3C,SAAgB,KAAK;IACnB,gBAAgB,CAAC,KAAK,EAAE,CAAA;AAC1B,CAAC;AAFD,sBAEC;AAED,SAAgB,MAAM;IACpB,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAA;AAClC,CAAC;AAFD,wBAEC"}
|