-
-
Notifications
You must be signed in to change notification settings - Fork 31.6k
buffer: use v8 fast API calls for Buffer.byteLength with sequential one-byte strings #46616
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
@anonrig, do we even need to go into native functions for short buffers? e.g. 1 byte? |
In this context: One byte refers to buffers with one byte string representations such as Ascii text. Using native calls will always be faster. "This is the way" - Mandalorian |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(re-approving to make sure the github bot is happy)
Commit Queue failed- Loading data for nodejs/node/pull/46616 ✔ Done loading data for nodejs/node/pull/46616 ----------------------------------- PR info ------------------------------------ Title buffer: use v8 fast API calls for Buffer.byteLength with sequential one-byte strings (#46616) Author Joyee Cheung (@joyeecheung) Branch joyeecheung:byte-length-one-byte -> nodejs:main Labels c++, lib / src, author ready, needs-ci Commits 5 - src: add SetFastMethodNoSideEffect() - benchmark: split Buffer.byteLength benchmark - buffer: use v8 fast API calls for Buffer.byteLength with sequential o… - fixup! buffer: use v8 fast API calls for Buffer.byteLength with seque… - fixup! benchmark: split Buffer.byteLength benchmark Committers 2 - Joyee Cheung - GitHub PR-URL: https://github.com/nodejs/node/pull/46616 Reviewed-By: Anna Henningsen Reviewed-By: Robert Nagy Reviewed-By: Yagiz Nizipli Reviewed-By: James M Snell ------------------------------ Generated metadata ------------------------------ PR-URL: https://github.com/nodejs/node/pull/46616 Reviewed-By: Anna Henningsen Reviewed-By: Robert Nagy Reviewed-By: Yagiz Nizipli Reviewed-By: James M Snell -------------------------------------------------------------------------------- ℹ This PR was created on Sat, 11 Feb 2023 18:32:19 GMT ✔ Approvals: 4 ✔ - Anna Henningsen (@addaleax): https://github.com/nodejs/node/pull/46616#pullrequestreview-1295966149 ✔ - Robert Nagy (@ronag) (TSC): https://github.com/nodejs/node/pull/46616#pullrequestreview-1296865088 ✔ - Yagiz Nizipli (@anonrig): https://github.com/nodejs/node/pull/46616#pullrequestreview-1296774718 ✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/46616#pullrequestreview-1304930817 ✔ Last GitHub CI successful ℹ Last Full PR CI on 2023-02-20T10:26:36Z: https://ci.nodejs.org/job/node-test-pull-request/49775/ - Querying data for job/node-test-pull-request/49775/ ✔ Last Jenkins CI successful -------------------------------------------------------------------------------- ✔ No git cherry-pick in progress ✔ No git am in progress ✔ No git rebase in progress -------------------------------------------------------------------------------- - Bringing origin/main up to date... From https://github.com/nodejs/node * branch main -> FETCH_HEAD ✔ origin/main is now up-to-date - Downloading patch for 46616 From https://github.com/nodejs/node * branch refs/pull/46616/merge -> FETCH_HEAD ✔ Fetched commits as b85b5ba10cd7..955cc5215476 -------------------------------------------------------------------------------- Auto-merging src/util.h [main 72bc87f801] src: add SetFastMethodNoSideEffect() Author: Joyee Cheung Date: Sat Feb 11 17:47:46 2023 +0100 3 files changed, 29 insertions(+), 2 deletions(-) [main 63a2cfe78e] benchmark: split Buffer.byteLength benchmark Author: Joyee Cheung Date: Sat Feb 11 17:48:17 2023 +0100 3 files changed, 62 insertions(+), 49 deletions(-) create mode 100644 benchmark/buffers/buffer-bytelength-buffer.js create mode 100644 benchmark/buffers/buffer-bytelength-string.js delete mode 100644 benchmark/buffers/buffer-bytelength.js Auto-merging src/node_external_reference.h [main ce060a1e41] buffer: use v8 fast API calls for Buffer.byteLength with sequential one-byte strings Author: Joyee Cheung Date: Sat Feb 11 17:49:32 2023 +0100 2 files changed, 28 insertions(+), 3 deletions(-) [main e2f3d9f5fb] fixup! buffer: use v8 fast API calls for Buffer.byteLength with sequential one-byte strings Author: Joyee Cheung Date: Mon Feb 13 16:57:01 2023 +0100 1 file changed, 1 insertion(+), 1 deletion(-) [main 24e347e7f3] fixup! benchmark: split Buffer.byteLength benchmark Author: Joyee Cheung Date: Sun Feb 19 21:53:12 2023 +0100 1 file changed, 1 insertion(+), 1 deletion(-) ✔ Patches applied There are 5 commits in the PR. Attempting autorebase. Rebasing (2/8)https://github.com/nodejs/node/actions/runs/4228422835 |
PR-URL: nodejs#46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Use v8 fast API calls for Buffer.byteLength with sequential one-byte strings. PR-URL: nodejs#46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
955cc52
to
ee1ce18
Compare
Landed in 55dd283...ee1ce18 |
PR-URL: #46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Use v8 fast API calls for Buffer.byteLength with sequential one-byte strings. PR-URL: #46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: #46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Use v8 fast API calls for Buffer.byteLength with sequential one-byte strings. PR-URL: #46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This is blocked by #45788 |
PR-URL: #46616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Depends on #46619
From a local run: I am a bit surprised by the last few numbers, theoretically there should be no difference for them. Curious about what the benchmark CI would show.