Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ethern-myth/em-bench
emBench is a Node.js package designed to provide benchmarking capabilities for Express.js applications
https://github.com/ethern-myth/em-bench
express javascript typescript
Last synced: 20 days ago
JSON representation
emBench is a Node.js package designed to provide benchmarking capabilities for Express.js applications
- Host: GitHub
- URL: https://github.com/ethern-myth/em-bench
- Owner: Ethern-Myth
- License: mit
- Created: 2024-04-10T16:06:17.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-10T16:11:44.000Z (9 months ago)
- Last Synced: 2024-12-02T09:05:43.889Z (21 days ago)
- Topics: express, javascript, typescript
- Language: TypeScript
- Homepage:
- Size: 67.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# emBench
[![NPM](https://nodei.co/npm/em-bench.png)](https://nodei.co/npm/em-bench/)
[![npm downloads](https://img.shields.io/npm/dm/em-bench)](https://www.npmjs.com/package/em-bench)
![Logo](/assets/logo/emBench.png)
## 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:
```bash
npm install em-bench
```OR
```bash
pnpm add em-bench
```OR
```bash
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
``` typescript
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
```typescript
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
```bash
[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](LICENSE) file for details.
### Author
Developed by [Ethern Myth](https://github.com/Ethern-Myth).