feathersjs / hooks

Async middleware for JavaScript and TypeScript
MIT License
157 stars 12 forks source link

feat(hooks): Performance improvements #106

Closed daffl closed 1 year ago

daffl commented 1 year ago

This pull request removes the copyToSelf method. The main reason it was added was to have all inherited properties available directly on the hook context instead of the prototype chain so you will see them right away if you console.log the context object. However, a performance analysis showed that this part is eating up over 60% of the overall hook runtime:

Screenshot 2023-02-06 at 4 36 39 PM

Inherited properties (like ctx.method) can still be accessed directly so this change won't have any actual breaking changes. In Feathers benchmarks this improved the Koa throughput from 33k requests/second to 39k and for Socket.io from 72k to ~83k requests/second.

fratzinger commented 1 year ago

Nice! 😍