Open melonges opened 2 weeks ago
I agree with the change. But since ThrottlerStorageService
is a public API, we can't change the return type of get storage
for now otherwise we'll introduce a breaking change
Just keep in mind that the performance depends on how your app is using it. I saw several benchmarks where access to a plain object were faster. Sometimes Map was faster. Maybe this could change in future releases of v8 idk
I agree with the change. But since
ThrottlerStorageService
is a public API, we can't change the return type ofget storage
for now otherwise we'll introduce a breaking changeJust keep in mind that the performance depends on how your app is using it. I saw several benchmarks where access to a plain object were faster. Sometimes Map was faster. Maybe this could change in future releases of v8 idk
Since Map is also an object, it can be written and accessed via the []
operator. The only problem is that the keys written inside ThrottlerStorageService
will not be accessible from the outside
Would you like to create a PR to address this issue?
Is there an existing issue that is already proposing this?
Is your feature request related to a problem? Please describe it
The current implementation of the
ThrottlerStorageService
uses a plain JavaScript objectRecord<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#L11Teachability, 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