Skip to content

util, assert: improve array comparison performance - #22111

Closed
BridgeAR wants to merge 5 commits into
nodejs:masterfrom
BridgeAR:improve-array-comparison-performance
Closed

util, assert: improve array comparison performance#22111
BridgeAR wants to merge 5 commits into
nodejs:masterfrom
BridgeAR:improve-array-comparison-performance

Conversation

@BridgeAR

Copy link
Copy Markdown
Member

See individual commits for detailed description.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

This reduces the runtime and makes sure the strict and loose options
can be tested individually.
Besides that a couple of redundant cases were removed.
This adds a smarter logic to compare object keys and it also skips
the object key comparison for arrays, if possible.
Besides that it adds a fast path for empty objects and arrays.
It also adds a fast path for boxed strings and improves the
comparison performance for TypedArrays with extra keys on the object.
On top of that a few functions are now safer to call by using
uncurryThis and by caching the actual function.
Currently the comparison could throw an error in case a boxed
primitive has no valueOf function on one side of the assert call.
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-botnodejs-github-bot added the util Issues and PRs related to the built-in util module. label Aug 3, 2018
@BridgeARBridgeAR added the performance Issues and PRs related to the performance of Node.js. label Aug 3, 2018
@BridgeAR

Copy link
Copy Markdown
MemberAuthor

@BridgeARBridgeAR added assert Issues and PRs related to the assert subsystem. benchmark Issues and PRs related to the benchmark subsystem. labels Aug 3, 2018
@jasnell

Copy link
Copy Markdown
Member
15:10:24 not ok 43 parallel/test-benchmark-assert

@BridgeAR

Copy link
Copy Markdown
MemberAuthor

@jasnell I fixed the test already.

@BridgeAR

Copy link
Copy Markdown
MemberAuthor

@nodejs/util @nodejs/testing PTAL

@BridgeAR

Copy link
Copy Markdown
MemberAuthor

@Trott

Trott commented Aug 6, 2018

Copy link
Copy Markdown
Member

@nodejs/benchmarking

@BridgeAR

Copy link
Copy Markdown
MemberAuthor

Since this PR did not yet get any attention and I have a follow-up PR. I am closing this one and just have a combined PR afterwards. See #22197

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

assertIssues and PRs related to the assert subsystem.benchmarkIssues and PRs related to the benchmark subsystem.performanceIssues and PRs related to the performance of Node.js.utilIssues and PRs related to the built-in util module.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@BridgeAR@nodejs-github-bot@jasnell@Trott