throttler icon indicating copy to clipboard operation
throttler copied to clipboard

Performance Improvement: use `Map` for storage in `ThrottlerStorageService`

Open melonges opened this issue 8 months ago • 3 comments

Is there an existing issue that is already proposing this?

  • [X] I have searched the existing issues

Is your feature request related to a problem? Please describe it

The current implementation of the ThrottlerStorageService uses a plain JavaScript object Record<string, ThrottlerStorageOptions> like key value storage. Replacing the plain object with a Map could yield significant performance improvements due to the optimized key-value operations provided by the Map data structure.

Describe the solution you'd like

use Map like key value storage Instead of plain JS object in this place https://github.com/nestjs/throttler/blob/master/src/throttler.service.ts#L11

Teachability, documentation, adoption, migration strategy

proofs: https://www.zhenghao.io/posts/object-vs-map and https://stackoverflow.com/questions/18541940/map-vs-object-in-javascript

What is the motivation / use case for changing the behavior?

because this is a highload service and speeding up read and write operation to storage would be a nice performance improvement

melonges avatar Jun 20 '24 18:06 melonges