https://github.com/norbornen/execution-time-decorator
Measure of typescript method execution time
https://github.com/norbornen/execution-time-decorator
decorators execution-time nestjs nodejs npm-package performance timetracker typescript
Last synced: 3 months ago
JSON representation
Measure of typescript method execution time
- Host: GitHub
- URL: https://github.com/norbornen/execution-time-decorator
- Owner: norbornen
- License: mit
- Created: 2019-10-03T13:01:20.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-19T09:56:36.000Z (almost 2 years ago)
- Last Synced: 2025-06-04T00:06:27.784Z (4 months ago)
- Topics: decorators, execution-time, nestjs, nodejs, npm-package, performance, timetracker, typescript
- Language: TypeScript
- Homepage:
- Size: 83 KB
- Stars: 19
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# execution-time-decorators
The `timer()` decorator starts a timer you can use to track how long an operation takes.
Suitable for use in both synchronous and asynchronous methods both in Node.js and Browser apps. [](https://github.com/norbornen/execution-time-decorator/actions)
[](https://github.com/norbornen/execution-time-decorator/actions)  [](https://snyk.io/test/github/norbornen/execution-time-decorator) [](https://www.npmjs.com/package/execution-time-decorators) ## Adding to your project
### In Node.js
Call require to get the instance:
```js
const { timer } = require('execution-time-decorators');
```Or in ES6 and TS:
```typescript
import { timer } from 'execution-time-decorators';
```## Usage
```typescript
class ExampleTimers {@timer()
readSync(filepath: string) {
return fs.readFileSync(filepath);
}@timer()
async readAsync(filepath: string) {
return fs.promises.readFile(filepath);
}@timer({ logger: pino })
async readAsyncP(filepath: string) {
return fs.promises.readFile(filepath);
}@timer({ hr: true })
static readSync(filepath: string) {
return fs.readFileSync(filepath);
}@timer({ logger: pino, hr: true })
static async readAsync(filepath: string) {
return fs.promises.readFile(filepath);
}}
``````console
[timer] [ExampleTimers::readSync]: begin
[timer] [ExampleTimers::readSync]: timer 0.008s[timer] [ExampleTimers::readAsync]: begin
[timer] [ExampleTimers::readAsync]: timer 0.010s{"level":30,"time":1687023007188,"pid":56981,"hostname":"192.168.68.52","msg":"[timer] [ExampleTimers::readAsyncP]: begin"}
{"level":30,"time":1687023007205,"pid":56981,"hostname":"192.168.68.52","msg":"[timer] [ExampleTimers::readAsyncP]: timer 0.017s"}[timer] [static ExampleTimers::readSync]: begin
[timer] [static ExampleTimers::readSync]: timer 7212041ns{"level":30,"time":1687023007212,"pid":56981,"hostname":"192.168.68.52","msg":"[timer] [static ExampleTimers::readAsync]: begin"}
{"level":30,"time":1687023007231,"pid":56981,"hostname":"192.168.68.52","msg":"[timer] [static ExampleTimers::readAsync]: timer 18302917ns"}
```## Options
Type: `object`
### logger
Type: `{ log: (...args: any[]) => void } | { info: (...args: any[]) => void }`\
Default: `console`Default or your current logger.
### logArguments
Type: `boolean`\
Default: `false`When true, arguments passed to the method will be print to the logs.
### hr
Type: `boolean`\
Default: `false`Print execution time in nanoseconds.