perf: use fast property access instead of get were possible #11389
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With this PR I replaced the get-method with fast property access were it is possible. I know that it looks not so sexy like the get call, but it has performance improvements as we dont need to split the path, traverse an array and stuff.
before:
$ MONGOOSE_DEV=1 node benchmarks/clone.js
Simple x 140,319 ops/sec ±1.35% (92 runs sampled)
AllSchema x 23,986 ops/sec ±1.26% (90 runs sampled)
MONGOOSE_DEV=1 node benchmarks/validate.js
invalid x 22,726 ops/sec ±0.62% (95 runs sampled)
valid x 61,786 ops/sec ±0.71% (93 runs sampled)
after
$ MONGOOSE_DEV=1 node benchmarks/clone.js
Simple x 196,277 ops/sec ±0.72% (92 runs sampled)
AllSchema x 28,769 ops/sec ±0.41% (94 runs sampled)
$ MONGOOSE_DEV=1 node benchmarks/validate.js
invalid x 23,488 ops/sec ±2.98% (95 runs sampled)
valid x 69,983 ops/sec ±1.05% (92 runs sampled
So atleast cloning is about 25 % faster.
We need more benchmarks imho... but hey. its something