Skip to content

src: use simdutf for two-byte string utf8 conversion in utf8 value - #62248

Open
mertcanaltin wants to merge 1 commit into
nodejs:mainfrom
mertcanaltin:mert/use-simdutf-for-two-byte-utf8
Open

src: use simdutf for two-byte string utf8 conversion in utf8 value#62248
mertcanaltin wants to merge 1 commit into
nodejs:mainfrom
mertcanaltin:mert/use-simdutf-for-two-byte-utf8

Conversation

@mertcanaltin

@mertcanaltin mertcanaltin commented Mar 14, 2026

Copy link
Copy Markdown
Member

latin-1 already used simdutf #61696,

I changed WriteUtf8V2 to simdutf for two-byte strings.

➜  node git:(mert/use-simdutf-for-two-byte-utf8) βœ— node-benchmark-compare ./result.csv
                                                confidence improvement accuracy (*)   (**)  (***)
util/utf8-value.js n=5000000 type='ascii'                      -0.11 %       Β±2.64% Β±3.69% Β±5.18%
util/utf8-value.js n=5000000 type='mixed'              ***     49.60 %       Β±1.90% Β±2.67% Β±3.78%
util/utf8-value.js n=5000000 type='three_bytes'        ***     31.10 %       Β±2.42% Β±3.34% Β±4.60%
util/utf8-value.js n=5000000 type='two_bytes'          ***     42.75 %       Β±1.42% Β±1.94% Β±2.66%

Be aware that when doing many comparisons the risk of a false-positive result increases.
In this case, there are 4 comparisons, you can thus expect the following amount of false-positive results:
  0.20 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.04 false positives, when considering a   1% risk acceptance (**, ***),
  0.00 false positives, when considering a 0.1% risk acceptance (***)

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/performance

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. labels Mar 14, 2026
@mertcanaltin
mertcanaltin force-pushed the mert/use-simdutf-for-two-byte-utf8 branch from f6d6f82 to d459594 Compare March 14, 2026 08:31
@codecov

codecov Bot commented Mar 14, 2026

Copy link
Copy Markdown

Codecov Report

βœ… All modified and coverable lines are covered by tests.
βœ… Project coverage is 90.32%. Comparing base (b2b7405) to head (0cb2a0b).
⚠️ Report is 102 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #62248      +/-   ##
==========================================
- Coverage   90.33%   90.32%   -0.02%     
==========================================
  Files         760      760              
  Lines      248523   248530       +7     
  Branches    46906    46892      -14     
==========================================
- Hits       224511   224481      -30     
- Misses      15451    15464      +13     
- Partials     8561     8585      +24     
Files with missing lines Coverage Ξ”
src/util.cc 87.16% <100.00%> (+0.20%) ⬆️

... and 30 files with indirect coverage changes

πŸš€ New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • πŸ“¦ JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment thread src/util.cc Outdated
@mertcanaltin
mertcanaltin force-pushed the mert/use-simdutf-for-two-byte-utf8 branch 5 times, most recently from dcbf493 to fb16b2d Compare March 14, 2026 17:12
@mertcanaltin
mertcanaltin requested a review from lemire March 15, 2026 14:30
@mcollina mcollina added the needs-benchmark-ci PR that need a benchmark CI run. label Mar 21, 2026
Comment thread src/util.cc Outdated

@lemire lemire left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this look fine, see my comment.

@anonrig anonrig added the request-ci Add this label to start a Jenkins CI on a PR. label Apr 9, 2026
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 9, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been marked as stale due to 90 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.

@github-actions github-actions Bot added the stale label Jul 28, 2026
@mertcanaltin
mertcanaltin force-pushed the mert/use-simdutf-for-two-byte-utf8 branch from 19f636f to 1a357a0 Compare August 10, 2026 00:13
Signed-off-by: Mert Can Altin <mertgold60@gmail.com>
@mertcanaltin
mertcanaltin force-pushed the mert/use-simdutf-for-two-byte-utf8 branch from 1a357a0 to 0cb2a0b Compare August 10, 2026 00:18
@github-actions github-actions Bot removed the stale label Aug 10, 2026
@anonrig anonrig added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs that have at least one approval, no pending requests for changes, and a CI started. labels Aug 15, 2026
@github-actions github-actions Bot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels Aug 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor
Failed to start CI
- Validating Jenkins credentials
βœ”  Jenkins credentials valid
- Querying data for job/node-test-pull-request/72570/
SyntaxError: Unexpected token '<', ..."    
  https://github.com/nodejs/node/actions/runs/31913056571

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

Labels

author ready PRs that have at least one approval, no pending requests for changes, and a CI started. c++ Issues and PRs that require attention from people who are familiar with C++. needs-benchmark-ci PR that need a benchmark CI run. needs-ci PRs that need a full CI run. request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants