em-bench
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

emBench

NPM

npm downloads

Logo

Overview

emBench is a Node.js package designed to provide benchmarking capabilities for Express.js applications. It offers a decorator function called Benchmark that can be applied to route handler methods to log the start time, end time, and duration of their execution.

Installation

You can install emBench via npm, pnpm or yarn by running:

npm install em-bench

OR

pnpm add em-bench

OR

yarn add em-bench

Usage

After installing emBench, you can import the Benchmark decorator function and apply it to your Express route handler methods.

Example 1

import express, { Request, Response } from "express";
import { Benchmark } from "em-bench";

const app = express();
const PORT = 3000;

// Define route with benchmarking
app.get("/", Benchmark, (req: Request, res: Response) => {
    res.send("Welcome to the homepage!");
});

// Start the server
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

Example 2

import express, { Request, Response } from "express";
import { Benchmark } from "em-bench";

const app = express();
const PORT = 3000;

// Middleware to parse JSON bodies
app.use(express.json());

class MyController {
    @Benchmark
    async myRoute(req: Request, res: Response) {
        // Your route handling logic goes here
        const { name } = req.body;
        res.send(`Hello, ${name || "world"}!`);
    }
}

const myController = new MyController();

// Route with benchmarking
app.post("/api/myroute", myController.myRoute);

// Start the server
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

Benchmark Decorator

The Benchmark decorator logs the start time, end time, and duration of method execution. It takes the following parameters:

  • _target: Ignored parameter, represents the constructor function of the class for instance methods.
  • _propertyKey: Ignored parameter, represents the name of the decorated property.
  • descriptor: Descriptor object representing the property being decorated.

Example Log Output

[GET] /api/myroute - Start time: 1632549760s 352.101ms
[GET] /api/myroute - End time: 1632549760s 756.243ms
[GET] /api/myroute - Duration: 404.142ms

Note

Make sure to apply the Benchmark decorator to your route handler methods within an Express application to utilize the benchmarking functionality provided by emBench.

Contributing

Contributions are welcome! Please open an issue or fork on the GitHub repository.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Developed by Ethern Myth.

Package Sidebar

Install

npm i em-bench

Weekly Downloads

0

Version

1.0.5

License

MIT

Unpacked Size

39 kB

Total Files

10

Last publish

Collaborators

  • ethernmyth