Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib: refactor to avoid unsafe regex primordials #43475

Merged
merged 3 commits into from
Jun 27, 2022

Conversation

aduh95
Copy link
Contributor

@aduh95 aduh95 commented Jun 18, 2022

Left over from #43393 (lint rule fix coming in a follow up PR)

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/http
  • @nodejs/http2
  • @nodejs/modules
  • @nodejs/net

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Jun 18, 2022
Copy link
Member

@GeoffreyBooth GeoffreyBooth left a comment

Choose a reason for hiding this comment

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

I trust you have a good reason for this . . . is RegExpPrototypeTest unsafe somehow?

@aduh95
Copy link
Contributor Author

aduh95 commented Jun 18, 2022

I trust you have a good reason for this . . . is RegExpPrototypeTest unsafe somehow?

It is:
https://github.com/nodejs/node/blob/main/doc/contributing/primordials.md#unsafe-regexp-methods

lib/internal/errors.js Outdated Show resolved Hide resolved
@tniessen
Copy link
Member

Are none of these in performance-critical locations, or have you verified that this does not affect performance? I'd imagine that test could be faster than exec in some situations because the runtime could probably optimize the returned array etc. away.

@aduh95 aduh95 added author ready PRs that have at least one approval, no pending requests for changes, and a CI started. request-ci Add this label to start a Jenkins CI on a PR. labels Jun 18, 2022
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 18, 2022
@nodejs-github-bot
Copy link
Collaborator

nodejs-github-bot commented Jun 18, 2022

CI: https://ci.nodejs.org/job/node-test-pull-request/44703/

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1156/

Benchmark results

confidence improvement accuracy (*)    (**)   (***)
assert/deepequal-buffer.js method='deepEqual' strict=0 len=1000 n=20000                                                                 1.76 %       ±7.73% ±10.28% ±13.39%
assert/deepequal-buffer.js method='deepEqual' strict=0 len=100 n=20000                                                                 -2.33 %       ±5.81%  ±7.74% ±10.09%
assert/deepequal-buffer.js method='deepEqual' strict=1 len=1000 n=20000                                                                -1.51 %       ±6.92%  ±9.20% ±11.98%
assert/deepequal-buffer.js method='deepEqual' strict=1 len=100 n=20000                                                                 -2.25 %       ±5.05%  ±6.72%  ±8.77%
assert/deepequal-buffer.js method='notDeepEqual' strict=0 len=1000 n=20000                                                             -1.44 %       ±6.30%  ±8.39% ±10.92%
assert/deepequal-buffer.js method='notDeepEqual' strict=0 len=100 n=20000                                                              -5.08 %       ±6.23%  ±8.29% ±10.81%
assert/deepequal-buffer.js method='notDeepEqual' strict=1 len=1000 n=20000                                                             -0.68 %       ±6.32%  ±8.41% ±10.95%
assert/deepequal-buffer.js method='notDeepEqual' strict=1 len=100 n=20000                                                               4.05 %       ±6.67%  ±8.88% ±11.58%
assert/deepequal-map.js method='deepEqual_mixed' strict=0 len=500 n=500                                                                 0.89 %       ±2.65%  ±3.53%  ±4.61%
assert/deepequal-map.js method='deepEqual_mixed' strict=1 len=500 n=500                                                                -0.55 %       ±2.61%  ±3.48%  ±4.54%
assert/deepequal-map.js method='deepEqual_objectOnly' strict=0 len=500 n=500                                                           -0.49 %       ±1.47%  ±1.95%  ±2.54%
assert/deepequal-map.js method='deepEqual_objectOnly' strict=1 len=500 n=500                                                            0.89 %       ±1.87%  ±2.49%  ±3.24%
assert/deepequal-map.js method='deepEqual_primitiveOnly' strict=0 len=500 n=500                                                        -3.41 %       ±5.61%  ±7.48%  ±9.76%
assert/deepequal-map.js method='deepEqual_primitiveOnly' strict=1 len=500 n=500                                                        -2.19 %       ±6.00%  ±7.99% ±10.40%
assert/deepequal-map.js method='notDeepEqual_mixed' strict=0 len=500 n=500                                                             -0.27 %       ±5.47%  ±7.28%  ±9.48%
assert/deepequal-map.js method='notDeepEqual_mixed' strict=1 len=500 n=500                                                              7.59 %       ±7.76% ±10.33% ±13.47%
assert/deepequal-map.js method='notDeepEqual_objectOnly' strict=0 len=500 n=500                                                        -0.15 %       ±2.66%  ±3.53%  ±4.60%
assert/deepequal-map.js method='notDeepEqual_objectOnly' strict=1 len=500 n=500                                                         0.78 %       ±2.41%  ±3.21%  ±4.20%
assert/deepequal-map.js method='notDeepEqual_primitiveOnly' strict=0 len=500 n=500                                                      2.23 %       ±5.24%  ±6.98%  ±9.11%
assert/deepequal-map.js method='notDeepEqual_primitiveOnly' strict=1 len=500 n=500                                                      2.77 %       ±5.61%  ±7.50%  ±9.81%
assert/deepequal-object.js method='deepEqual' strict=0 size=1000 n=5000                                                                -0.05 %       ±4.66%  ±6.19%  ±8.06%
assert/deepequal-object.js method='deepEqual' strict=0 size=100 n=5000                                                                 -5.30 %       ±6.21%  ±8.28% ±10.82%
assert/deepequal-object.js method='deepEqual' strict=0 size=50000 n=5000                                                               -0.75 %       ±2.13%  ±2.84%  ±3.70%
assert/deepequal-object.js method='deepEqual' strict=1 size=1000 n=5000                                                                -0.88 %       ±5.06%  ±6.73%  ±8.76%
assert/deepequal-object.js method='deepEqual' strict=1 size=100 n=5000                                                                 -2.36 %       ±6.41%  ±8.53% ±11.12%
assert/deepequal-object.js method='deepEqual' strict=1 size=50000 n=5000                                                                0.21 %       ±1.78%  ±2.37%  ±3.09%
assert/deepequal-object.js method='notDeepEqual' strict=0 size=1000 n=5000                                                             -0.03 %       ±9.47% ±12.60% ±16.40%
assert/deepequal-object.js method='notDeepEqual' strict=0 size=100 n=5000                                                              -0.46 %       ±5.64%  ±7.50%  ±9.76%
assert/deepequal-object.js method='notDeepEqual' strict=0 size=50000 n=5000                                                             2.27 %       ±7.02%  ±9.34% ±12.16%
assert/deepequal-object.js method='notDeepEqual' strict=1 size=1000 n=5000                                                              1.89 %       ±8.44% ±11.25% ±14.68%
assert/deepequal-object.js method='notDeepEqual' strict=1 size=100 n=5000                                                              -1.92 %       ±6.12%  ±8.15% ±10.62%
assert/deepequal-object.js method='notDeepEqual' strict=1 size=50000 n=5000                                                             0.28 %       ±7.42%  ±9.87% ±12.85%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=0 len=20000 n=25 primitive='array'                     3.88 %       ±5.80%  ±7.73% ±10.08%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=0 len=20000 n=25 primitive='number'                   -1.62 %       ±6.33%  ±8.42% ±10.96%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=0 len=20000 n=25 primitive='object'                    1.14 %       ±5.58%  ±7.43%  ±9.68%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=0 len=20000 n=25 primitive='string'                    2.08 %       ±6.18%  ±8.23% ±10.72%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=1 len=20000 n=25 primitive='array'                    -3.26 %       ±6.17%  ±8.22% ±10.71%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=1 len=20000 n=25 primitive='number'                   -2.22 %       ±5.31%  ±7.08%  ±9.23%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=1 len=20000 n=25 primitive='object'                   -4.42 %       ±5.08%  ±6.80%  ±8.91%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Array' strict=1 len=20000 n=25 primitive='string'             *      5.75 %       ±5.39%  ±7.21%  ±9.47%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=0 len=20000 n=25 primitive='array'                      -5.47 %       ±7.87% ±10.49% ±13.69%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=0 len=20000 n=25 primitive='number'                     -1.02 %       ±7.88% ±10.48% ±13.64%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=0 len=20000 n=25 primitive='object'                     -1.89 %       ±6.14%  ±8.17% ±10.63%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=0 len=20000 n=25 primitive='string'                      5.07 %       ±7.14%  ±9.51% ±12.40%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=1 len=20000 n=25 primitive='array'                       1.26 %       ±6.11%  ±8.14% ±10.61%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=1 len=20000 n=25 primitive='number'                     -0.39 %       ±6.97%  ±9.27% ±12.07%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=1 len=20000 n=25 primitive='object'                     -1.21 %       ±7.58% ±10.09% ±13.13%
assert/deepequal-prims-and-objs-big-array-set.js method='deepEqual_Set' strict=1 len=20000 n=25 primitive='string'                      1.77 %       ±6.09%  ±8.11% ±10.57%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=0 len=20000 n=25 primitive='array'                  2.01 %       ±5.76%  ±7.66%  ±9.97%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=0 len=20000 n=25 primitive='number'                -4.05 %       ±5.67%  ±7.54%  ±9.81%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=0 len=20000 n=25 primitive='object'                 3.35 %       ±6.26%  ±8.33% ±10.84%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=0 len=20000 n=25 primitive='string'                -2.77 %       ±5.24%  ±6.97%  ±9.07%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=1 len=20000 n=25 primitive='array'                 -0.34 %       ±9.84% ±13.16% ±17.26%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=1 len=20000 n=25 primitive='number'                -2.02 %       ±5.43%  ±7.23%  ±9.43%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=1 len=20000 n=25 primitive='object'                 0.63 %       ±5.76%  ±7.66%  ±9.97%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Array' strict=1 len=20000 n=25 primitive='string'                -1.98 %       ±5.48%  ±7.28%  ±9.48%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=0 len=20000 n=25 primitive='array'                   -0.26 %       ±7.70% ±10.27% ±13.41%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=0 len=20000 n=25 primitive='number'                  -2.20 %       ±7.69% ±10.23% ±13.32%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=0 len=20000 n=25 primitive='object'                  -1.64 %       ±6.50%  ±8.65% ±11.26%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=0 len=20000 n=25 primitive='string'                  -0.52 %       ±5.69%  ±7.58%  ±9.86%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=1 len=20000 n=25 primitive='array'                   -3.25 %       ±7.92% ±10.57% ±13.81%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=1 len=20000 n=25 primitive='number'                  -4.77 %       ±7.53% ±10.04% ±13.12%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=1 len=20000 n=25 primitive='object'                   0.06 %       ±7.17%  ±9.54% ±12.42%
assert/deepequal-prims-and-objs-big-array-set.js method='notDeepEqual_Set' strict=1 len=20000 n=25 primitive='string'                   2.89 %       ±6.96%  ±9.29% ±12.14%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=20000 primitive='array'                                       0.88 %       ±7.18%  ±9.56% ±12.45%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=20000 primitive='number'                                      0.87 %       ±6.43%  ±8.56% ±11.15%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=20000 primitive='object'                                      0.61 %       ±6.85%  ±9.12% ±11.88%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=20000 primitive='string'                                      0.03 %       ±5.19%  ±6.90%  ±8.99%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=20000 primitive='array'                                       1.48 %       ±6.62%  ±8.81% ±11.47%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=20000 primitive='number'                                      1.97 %       ±8.05% ±10.71% ±13.94%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=20000 primitive='object'                                      2.61 %       ±6.89%  ±9.17% ±11.95%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=20000 primitive='string'                                     -2.06 %       ±6.02%  ±8.02% ±10.46%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=0 n=20000 primitive='array'                                   -1.35 %       ±7.46%  ±9.93% ±12.92%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=0 n=20000 primitive='number'                                   0.24 %       ±7.41%  ±9.87% ±12.86%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=0 n=20000 primitive='object'                                   2.09 %       ±7.91% ±10.54% ±13.72%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=0 n=20000 primitive='string'                                   5.00 %       ±6.49%  ±8.68% ±11.39%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=20000 primitive='array'                                    3.82 %       ±6.30%  ±8.40% ±10.96%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=20000 primitive='number'                                   0.42 %       ±7.88% ±10.48% ±13.64%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=20000 primitive='object'                                  -1.32 %       ±6.10%  ±8.12% ±10.57%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=20000 primitive='string'                                  -2.87 %       ±6.99%  ±9.30% ±12.12%
assert/deepequal-set.js method='deepEqual_mixed' strict=0 len=500 n=500                                                                 0.31 %       ±1.91%  ±2.54%  ±3.31%
assert/deepequal-set.js method='deepEqual_mixed' strict=1 len=500 n=500                                                                -1.53 %       ±2.03%  ±2.71%  ±3.53%
assert/deepequal-set.js method='deepEqual_objectOnly' strict=0 len=500 n=500                                                           -2.34 %       ±3.33%  ±4.43%  ±5.77%
assert/deepequal-set.js method='deepEqual_objectOnly' strict=1 len=500 n=500                                                            0.55 %       ±1.49%  ±1.98%  ±2.58%
assert/deepequal-set.js method='deepEqual_primitiveOnly' strict=0 len=500 n=500                                                        -0.40 %       ±6.96%  ±9.26% ±12.05%
assert/deepequal-set.js method='deepEqual_primitiveOnly' strict=1 len=500 n=500                                                        -2.40 %       ±6.35%  ±8.44% ±10.99%
assert/deepequal-set.js method='notDeepEqual_mixed' strict=0 len=500 n=500                                                             -3.32 %       ±6.17%  ±8.21% ±10.69%
assert/deepequal-set.js method='notDeepEqual_mixed' strict=1 len=500 n=500                                                              2.30 %       ±6.76%  ±8.99% ±11.70%
assert/deepequal-set.js method='notDeepEqual_objectOnly' strict=0 len=500 n=500                                                        -0.07 %       ±2.26%  ±3.01%  ±3.92%
assert/deepequal-set.js method='notDeepEqual_objectOnly' strict=1 len=500 n=500                                                         1.78 %       ±2.50%  ±3.33%  ±4.35%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' strict=0 len=500 n=500                                                     -1.14 %       ±3.46%  ±4.61%  ±6.00%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' strict=1 len=500 n=500                                                     -0.38 %       ±4.57%  ±6.07%  ±7.91%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=500 type='Float32Array'                                          -1.18 %       ±5.43%  ±7.22%  ±9.40%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=500 type='Float64Array'                                          -2.18 %       ±4.65%  ±6.19%  ±8.06%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=500 type='Int8Array'                                             -5.08 %       ±5.44%  ±7.25%  ±9.46%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=500 type='Uint8Array'                                             1.16 %       ±7.02%  ±9.34% ±12.18%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=500 type='Uint8ClampedArray'                                      3.92 %       ±7.46%  ±9.93% ±12.94%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=500 type='Float32Array'                                           0.45 %       ±5.20%  ±6.91%  ±9.00%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=500 type='Float64Array'                                           1.79 %       ±6.87%  ±9.17% ±11.97%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=500 type='Int8Array'                                              3.49 %       ±8.55% ±11.38% ±14.81%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=500 type='Uint8Array'                                             1.76 %       ±6.16%  ±8.20% ±10.69%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=500 type='Uint8ClampedArray'                                      1.90 %       ±6.42%  ±8.55% ±11.13%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=500 type='Float32Array'                                       -1.90 %       ±3.89%  ±5.19%  ±6.79%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=500 type='Float64Array'                                       -0.03 %       ±5.03%  ±6.70%  ±8.73%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=500 type='Int8Array'                                           4.90 %       ±5.18%  ±6.89%  ±8.96%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=500 type='Uint8Array'                                         -4.07 %       ±6.78%  ±9.03% ±11.76%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=500 type='Uint8ClampedArray'                                   4.44 %       ±5.98%  ±7.97% ±10.41%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=500 type='Float32Array'                                        0.32 %       ±7.08%  ±9.42% ±12.26%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=500 type='Float64Array'                                 *      7.32 %       ±6.70%  ±8.93% ±11.64%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=500 type='Int8Array'                                          -6.30 %       ±6.75%  ±9.01% ±11.79%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=500 type='Uint8Array'                                          0.50 %       ±7.68% ±10.22% ±13.30%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=500 type='Uint8ClampedArray'                                   4.56 %       ±6.27%  ±8.34% ±10.87%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=500 type='Float32Array'                                         -3.57 %       ±3.79%  ±5.04%  ±6.56%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=500 type='Float64Array'                                          2.50 %       ±2.93%  ±3.90%  ±5.07%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=500 type='Int8Array'                                             2.37 %       ±6.45%  ±8.59% ±11.18%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=500 type='Uint8Array'                                           -1.61 %      ±10.43% ±13.90% ±18.15%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=500 type='Uint8ClampedArray'                                     0.17 %       ±6.51%  ±8.68% ±11.31%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=500 type='Float32Array'                                         -1.66 %       ±6.49%  ±8.64% ±11.26%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=500 type='Float64Array'                                          1.74 %       ±6.97%  ±9.28% ±12.08%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=500 type='Int8Array'                                            -0.09 %       ±6.87%  ±9.14% ±11.89%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=500 type='Uint8Array'                                            5.55 %       ±6.15%  ±8.20% ±10.70%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=500 type='Uint8ClampedArray'                                    -1.36 %       ±6.49%  ±8.63% ±11.24%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=500 type='Float32Array'                                      -1.84 %       ±5.29%  ±7.04%  ±9.16%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=500 type='Float64Array'                                      -2.06 %       ±4.38%  ±5.83%  ±7.58%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=500 type='Int8Array'                                         -2.54 %       ±7.59% ±10.09% ±13.14%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=500 type='Uint8Array'                                        -1.11 %       ±6.85%  ±9.13% ±11.89%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=500 type='Uint8ClampedArray'                                  1.01 %       ±8.80% ±11.71% ±15.25%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=500 type='Float32Array'                                      -2.94 %       ±5.98%  ±7.96% ±10.36%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=500 type='Float64Array'                                      -0.74 %       ±6.96%  ±9.27% ±12.07%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=500 type='Int8Array'                                          1.32 %       ±7.07%  ±9.40% ±12.24%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=500 type='Uint8Array'                                        -5.03 %       ±6.95%  ±9.26% ±12.10%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=500 type='Uint8ClampedArray'                                  1.50 %       ±6.60%  ±8.78% ±11.43%
assert/ok.js n=100000                                                                                                                   1.58 %       ±4.31%  ±5.76%  ±7.54%
assert/throws.js method='doesNotThrow' n=10000                                                                                          0.85 %       ±5.87%  ±7.81% ±10.18%
assert/throws.js method='throws_RegExp' n=10000                                                                                         2.03 %       ±4.61%  ±6.13%  ±7.99%
assert/throws.js method='throws_TypeError' n=10000                                                                              **      6.91 %       ±4.89%  ±6.53%  ±8.52%
dns/lookup.js n=5000000 all='false' name='::1'                                                                                 ***    -27.54 %       ±1.36%  ±1.82%  ±2.37%
dns/lookup.js n=5000000 all='false' name='127.0.0.1'                                                                           ***    -18.83 %       ±3.90%  ±5.20%  ±6.77%
dns/lookup.js n=5000000 all='true' name='::1'                                                                                  ***    -23.34 %       ±1.88%  ±2.51%  ±3.29%
dns/lookup.js n=5000000 all='true' name='127.0.0.1'                                                                            ***    -14.51 %       ±2.61%  ±3.49%  ±4.58%
dns/lookup-promises.js n=5000000 all='false' name='::1'                                                                               -10.12 %      ±13.69% ±18.41% ±24.37%
dns/lookup-promises.js n=5000000 all='false' name='127.0.0.1'                                                                           6.06 %      ±11.24% ±15.07% ±19.85%
dns/lookup-promises.js n=5000000 all='true' name='::1'                                                                                  6.56 %       ±9.68% ±13.00% ±17.17%
dns/lookup-promises.js n=5000000 all='true' name='127.0.0.1'                                                                           -0.67 %       ±8.23% ±10.95% ±14.26%
fs/bench-mkdirp.js n=10000                                                                                                             -0.90 %       ±4.80%  ±6.38%  ±8.31%
fs/bench-opendir.js bufferSize=1024 mode='async' dir='lib' n=100                                                                        2.91 %       ±6.09%  ±8.11% ±10.57%
fs/bench-opendir.js bufferSize=1024 mode='async' dir='test/parallel' n=100                                                              3.34 %       ±5.39%  ±7.17%  ±9.33%
fs/bench-opendir.js bufferSize=1024 mode='callback' dir='lib' n=100                                                                     5.41 %       ±7.02%  ±9.35% ±12.17%
fs/bench-opendir.js bufferSize=1024 mode='callback' dir='test/parallel' n=100                                                           0.74 %       ±5.52%  ±7.35%  ±9.58%
fs/bench-opendir.js bufferSize=1024 mode='sync' dir='lib' n=100                                                                         2.56 %       ±7.04%  ±9.39% ±12.27%
fs/bench-opendir.js bufferSize=1024 mode='sync' dir='test/parallel' n=100                                                              -0.55 %       ±1.66%  ±2.21%  ±2.89%
fs/bench-opendir.js bufferSize=32 mode='async' dir='lib' n=100                                                                         -2.46 %       ±5.06%  ±6.73%  ±8.76%
fs/bench-opendir.js bufferSize=32 mode='async' dir='test/parallel' n=100                                                               -0.06 %       ±6.78%  ±9.02% ±11.74%
fs/bench-opendir.js bufferSize=32 mode='callback' dir='lib' n=100                                                                       2.08 %       ±6.09%  ±8.10% ±10.55%
fs/bench-opendir.js bufferSize=32 mode='callback' dir='test/parallel' n=100                                                            -1.29 %       ±4.62%  ±6.15%  ±8.01%
fs/bench-opendir.js bufferSize=32 mode='sync' dir='lib' n=100                                                                          -4.49 %       ±6.28%  ±8.36% ±10.89%
fs/bench-opendir.js bufferSize=32 mode='sync' dir='test/parallel' n=100                                                                 0.60 %       ±1.32%  ±1.76%  ±2.29%
fs/bench-opendir.js bufferSize=4 mode='async' dir='lib' n=100                                                                           0.20 %       ±6.40%  ±8.54% ±11.15%
fs/bench-opendir.js bufferSize=4 mode='async' dir='test/parallel' n=100                                                                -2.19 %       ±3.14%  ±4.18%  ±5.44%
fs/bench-opendir.js bufferSize=4 mode='callback' dir='lib' n=100                                                                       -0.82 %       ±5.44%  ±7.25%  ±9.44%
fs/bench-opendir.js bufferSize=4 mode='callback' dir='test/parallel' n=100                                                              1.74 %       ±3.83%  ±5.09%  ±6.63%
fs/bench-opendir.js bufferSize=4 mode='sync' dir='lib' n=100                                                                           -1.20 %       ±5.84%  ±7.77% ±10.12%
fs/bench-opendir.js bufferSize=4 mode='sync' dir='test/parallel' n=100                                                                 -0.43 %       ±1.62%  ±2.16%  ±2.82%
fs/bench-readdir.js withFileTypes='false' dir='lib' n=10                                                                               -1.28 %       ±5.04%  ±6.71%  ±8.76%
fs/bench-readdir.js withFileTypes='false' dir='test/parallel' n=10                                                                     -0.70 %       ±2.88%  ±3.83%  ±4.99%
fs/bench-readdir.js withFileTypes='true' dir='lib' n=10                                                                         **     -5.58 %       ±3.67%  ±4.89%  ±6.38%
fs/bench-readdir.js withFileTypes='true' dir='test/parallel' n=10                                                                       1.00 %       ±3.04%  ±4.05%  ±5.28%
fs/bench-readdirSync.js withFileTypes='false' dir='lib' n=10                                                                           -0.37 %       ±6.95%  ±9.25% ±12.05%
fs/bench-readdirSync.js withFileTypes='false' dir='test/parallel' n=10                                                                  4.32 %       ±6.24%  ±8.32% ±10.87%
fs/bench-readdirSync.js withFileTypes='true' dir='lib' n=10                                                                      *     -8.02 %       ±6.35%  ±8.46% ±11.04%
fs/bench-readdirSync.js withFileTypes='true' dir='test/parallel' n=10                                                                   4.23 %       ±6.26%  ±8.33% ±10.84%
fs/bench-realpath.js pathType='relative' n=10000                                                                                       -1.90 %       ±3.85%  ±5.12%  ±6.66%
fs/bench-realpath.js pathType='resolved' n=10000                                                                                       -0.70 %       ±3.72%  ±4.95%  ±6.45%
fs/bench-realpathSync.js pathType='relative' n=10000                                                                                    1.40 %       ±3.64%  ±4.84%  ±6.30%
fs/bench-realpathSync.js pathType='resolved' n=10000                                                                             *      3.57 %       ±3.37%  ±4.48%  ±5.83%
fs/bench-stat.js statType='fstat' n=200000                                                                                             -1.14 %       ±4.63%  ±6.15%  ±8.01%
fs/bench-stat.js statType='lstat' n=200000                                                                                             -0.91 %       ±4.36%  ±5.80%  ±7.55%
fs/bench-stat.js statType='stat' n=200000                                                                                               0.74 %       ±4.94%  ±6.57%  ±8.55%
fs/bench-stat-promise.js statType='fstat' n=200000                                                                                     -0.54 %       ±2.99%  ±3.98%  ±5.18%
fs/bench-stat-promise.js statType='lstat' n=200000                                                                                     -0.75 %       ±3.89%  ±5.18%  ±6.74%
fs/bench-stat-promise.js statType='stat' n=200000                                                                                      -2.67 %       ±3.42%  ±4.55%  ±5.93%
fs/bench-statSync-failure.js statSyncType='noThrow' n=1000000                                                                          -1.59 %       ±2.67%  ±3.56%  ±4.67%
fs/bench-statSync-failure.js statSyncType='throw' n=1000000                                                                            -2.11 %       ±2.51%  ±3.35%  ±4.38%
fs/bench-statSync.js statSyncType='fstatSync' n=1000000                                                                                 1.67 %       ±2.33%  ±3.12%  ±4.09%
fs/bench-statSync.js statSyncType='lstatSync' n=1000000                                                                                 0.06 %       ±2.19%  ±2.92%  ±3.80%
fs/bench-statSync.js statSyncType='statSync' n=1000000                                                                                 -0.67 %       ±2.74%  ±3.65%  ±4.75%
fs/readfile.js concurrent=10 len=1024 duration=5                                                                                       -1.88 %       ±5.60%  ±7.46%  ±9.71%
fs/readfile.js concurrent=10 len=16777216 duration=5                                                                                   -0.26 %       ±2.70%  ±3.59%  ±4.68%
fs/readfile.js concurrent=1 len=1024 duration=5                                                                                        -2.25 %       ±3.27%  ±4.36%  ±5.68%
fs/readfile.js concurrent=1 len=16777216 duration=5                                                                                    -3.54 %       ±9.84% ±13.09% ±17.04%
fs/readfile-partitioned.js concurrent=10 len=1024 dur=5                                                                                -0.18 %       ±6.78%  ±9.03% ±11.75%
fs/readfile-partitioned.js concurrent=10 len=16777216 dur=5                                                                            -1.55 %       ±3.49%  ±4.64%  ±6.04%
fs/readfile-partitioned.js concurrent=1 len=1024 dur=5                                                                                 -5.25 %       ±8.47% ±11.27% ±14.67%
fs/readfile-partitioned.js concurrent=1 len=16777216 dur=5                                                                              2.03 %       ±3.29%  ±4.37%  ±5.70%
fs/readfile-promises.js concurrent=10 len=1024 duration=5                                                                               2.30 %      ±11.16% ±14.85% ±19.33%
fs/readfile-promises.js concurrent=10 len=16777216 duration=5                                                                          -1.32 %       ±3.34%  ±4.44%  ±5.78%
fs/readfile-promises.js concurrent=1 len=1024 duration=5                                                                               -1.22 %       ±3.36%  ±4.47%  ±5.84%
fs/readfile-promises.js concurrent=1 len=16777216 duration=5                                                                            8.39 %      ±10.13% ±13.50% ±17.59%
fs/readFileSync.js n=600000                                                                                                            -1.77 %       ±3.43%  ±4.57%  ±5.96%
fs/read-stream-throughput.js n=1024 highWaterMark=1024 filesize=1024000 encodingType='asc'                                             -0.04 %       ±3.41%  ±4.53%  ±5.90%
fs/read-stream-throughput.js n=1024 highWaterMark=1024 filesize=1024000 encodingType='buf'                                             -0.91 %       ±2.66%  ±3.54%  ±4.62%
fs/read-stream-throughput.js n=1024 highWaterMark=1024 filesize=1024000 encodingType='utf'                                             -0.63 %       ±2.15%  ±2.86%  ±3.73%
fs/read-stream-throughput.js n=1024 highWaterMark=1048576 filesize=1024000 encodingType='asc'                                           2.54 %       ±5.78%  ±7.71% ±10.08%
fs/read-stream-throughput.js n=1024 highWaterMark=1048576 filesize=1024000 encodingType='buf'                                           6.98 %      ±15.99% ±21.29% ±27.73%
fs/read-stream-throughput.js n=1024 highWaterMark=1048576 filesize=1024000 encodingType='utf'                                           2.44 %      ±15.62% ±20.78% ±27.05%
fs/read-stream-throughput.js n=1024 highWaterMark=4096 filesize=1024000 encodingType='asc'                                              2.06 %       ±4.09%  ±5.46%  ±7.14%
fs/read-stream-throughput.js n=1024 highWaterMark=4096 filesize=1024000 encodingType='buf'                                             -0.90 %       ±3.65%  ±4.86%  ±6.32%
fs/read-stream-throughput.js n=1024 highWaterMark=4096 filesize=1024000 encodingType='utf'                                             -2.01 %       ±4.77%  ±6.35%  ±8.26%
fs/read-stream-throughput.js n=1024 highWaterMark=65535 filesize=1024000 encodingType='asc'                                            -4.19 %       ±8.11% ±10.78% ±14.04%
fs/read-stream-throughput.js n=1024 highWaterMark=65535 filesize=1024000 encodingType='buf'                                      *    -11.87 %      ±10.01% ±13.34% ±17.41%
fs/read-stream-throughput.js n=1024 highWaterMark=65535 filesize=1024000 encodingType='utf'                                            -1.20 %       ±3.37%  ±4.49%  ±5.86%
fs/writefile-promises.js concurrent=10 size=1024 encodingType='asc' duration=5                                                          1.21 %       ±3.89%  ±5.18%  ±6.75%
fs/writefile-promises.js concurrent=10 size=1024 encodingType='buf' duration=5                                                          2.47 %       ±5.35%  ±7.13%  ±9.28%
fs/writefile-promises.js concurrent=10 size=1024 encodingType='utf' duration=5                                                         -0.34 %       ±4.14%  ±5.50%  ±7.16%
fs/writefile-promises.js concurrent=10 size=1048576 encodingType='asc' duration=5                                                      -0.74 %       ±1.10%  ±1.46%  ±1.90%
fs/writefile-promises.js concurrent=10 size=1048576 encodingType='buf' duration=5                                                       0.00 %       ±0.71%  ±0.94%  ±1.23%
fs/writefile-promises.js concurrent=10 size=1048576 encodingType='utf' duration=5                                                       0.24 %      ±10.83% ±14.41% ±18.76%
fs/writefile-promises.js concurrent=10 size=2 encodingType='asc' duration=5                                                            -2.65 %       ±4.67%  ±6.21%  ±8.09%
fs/writefile-promises.js concurrent=10 size=2 encodingType='buf' duration=5                                                             3.24 %       ±4.53%  ±6.02%  ±7.84%
fs/writefile-promises.js concurrent=10 size=2 encodingType='utf' duration=5                                                            -1.01 %       ±4.36%  ±5.80%  ±7.55%
fs/writefile-promises.js concurrent=10 size=65535 encodingType='asc' duration=5                                                         0.73 %       ±6.43%  ±8.56% ±11.14%
fs/writefile-promises.js concurrent=10 size=65535 encodingType='buf' duration=5                                                         2.13 %       ±3.96%  ±5.27%  ±6.86%
fs/writefile-promises.js concurrent=10 size=65535 encodingType='utf' duration=5                                                         2.96 %       ±8.66% ±11.52% ±14.99%
fs/writefile-promises.js concurrent=1 size=1024 encodingType='asc' duration=5                                                           0.40 %       ±2.11%  ±2.80%  ±3.65%
fs/writefile-promises.js concurrent=1 size=1024 encodingType='buf' duration=5                                                          -0.69 %       ±3.20%  ±4.26%  ±5.54%
fs/writefile-promises.js concurrent=1 size=1024 encodingType='utf' duration=5                                                           0.35 %       ±3.38%  ±4.49%  ±5.85%
fs/writefile-promises.js concurrent=1 size=1048576 encodingType='asc' duration=5                                                        1.14 %       ±9.33% ±12.42% ±16.16%
fs/writefile-promises.js concurrent=1 size=1048576 encodingType='buf' duration=5                                                       -0.34 %       ±9.60% ±12.78% ±16.65%
fs/writefile-promises.js concurrent=1 size=1048576 encodingType='utf' duration=5                                                        6.43 %       ±6.79%  ±9.04% ±11.77%
fs/writefile-promises.js concurrent=1 size=2 encodingType='asc' duration=5                                                             -1.79 %       ±3.36%  ±4.48%  ±5.84%
fs/writefile-promises.js concurrent=1 size=2 encodingType='buf' duration=5                                                              1.64 %       ±2.63%  ±3.50%  ±4.56%
fs/writefile-promises.js concurrent=1 size=2 encodingType='utf' duration=5                                                             -2.27 %       ±2.95%  ±3.93%  ±5.12%
fs/writefile-promises.js concurrent=1 size=65535 encodingType='asc' duration=5                                                         -5.22 %       ±9.52% ±12.66% ±16.48%
fs/writefile-promises.js concurrent=1 size=65535 encodingType='buf' duration=5                                                         -0.14 %       ±7.55% ±10.05% ±13.09%
fs/writefile-promises.js concurrent=1 size=65535 encodingType='utf' duration=5                                                         -2.75 %      ±10.20% ±13.57% ±17.67%
fs/write-stream-throughput.js size=1024 encodingType='asc' dur=5                                                                       -1.79 %       ±5.37%  ±7.15%  ±9.30%
fs/write-stream-throughput.js size=1024 encodingType='buf' dur=5                                                                        5.91 %       ±8.10% ±10.77% ±14.03%
fs/write-stream-throughput.js size=1024 encodingType='utf' dur=5                                                                        1.17 %       ±7.72% ±10.27% ±13.36%
fs/write-stream-throughput.js size=1048576 encodingType='asc' dur=5                                                             **     -6.00 %       ±4.48%  ±5.97%  ±7.80%
fs/write-stream-throughput.js size=1048576 encodingType='buf' dur=5                                                                     2.04 %      ±10.61% ±14.11% ±18.37%
fs/write-stream-throughput.js size=1048576 encodingType='utf' dur=5                                                                    -3.15 %       ±5.27%  ±7.02%  ±9.16%
fs/write-stream-throughput.js size=2 encodingType='asc' dur=5                                                                           4.43 %      ±10.31% ±13.72% ±17.86%
fs/write-stream-throughput.js size=2 encodingType='buf' dur=5                                                                          -6.84 %       ±8.42% ±11.20% ±14.58%
fs/write-stream-throughput.js size=2 encodingType='utf' dur=5                                                                          -2.19 %      ±10.38% ±13.81% ±17.97%
fs/write-stream-throughput.js size=65535 encodingType='asc' dur=5                                                                *    -10.69 %       ±8.84% ±11.77% ±15.32%
fs/write-stream-throughput.js size=65535 encodingType='buf' dur=5                                                                      -6.85 %      ±10.33% ±13.79% ±18.02%
fs/write-stream-throughput.js size=65535 encodingType='utf' dur=5                                                                      -4.77 %      ±10.05% ±13.37% ±17.41%
misc/arguments.js n=1000000 method='argumentsAndApply'                                                                                  0.38 %       ±1.43%  ±1.91%  ±2.48%
misc/arguments.js n=1000000 method='predefined'                                                                                         0.55 %       ±2.11%  ±2.81%  ±3.66%
misc/arguments.js n=1000000 method='restAndApply'                                                                                       0.48 %       ±1.33%  ±1.77%  ±2.30%
misc/arguments.js n=1000000 method='restAndSpread'                                                                                      0.06 %       ±1.60%  ±2.13%  ±2.77%
misc/freelist.js n=100000                                                                                                              -2.56 %       ±4.12%  ±5.54%  ±7.31%
misc/getstringwidth.js n=100000 type='ascii'                                                                                           -2.70 %       ±4.37%  ±5.86%  ±7.74%
misc/getstringwidth.js n=100000 type='emojiseq'                                                                                         1.05 %       ±4.56%  ±6.11%  ±8.03%
misc/getstringwidth.js n=100000 type='fullwidth'                                                                                       -1.20 %       ±2.87%  ±3.86%  ±5.10%
misc/getstringwidth.js n=100000 type='mixed'                                                                                           -0.58 %       ±4.34%  ±5.78%  ±7.53%
misc/hidestackframes.js n=100000 type='direct-call-noerr'                                                                              -1.41 %       ±6.37%  ±8.47% ±11.04%
misc/hidestackframes.js n=100000 type='direct-call-throw'                                                                              -1.82 %       ±4.51%  ±6.00%  ±7.82%
misc/hidestackframes.js n=100000 type='hide-stackframes-noerr'                                                                         -3.30 %      ±11.36% ±15.12% ±19.68%
misc/hidestackframes.js n=100000 type='hide-stackframes-throw'                                                                          0.42 %       ±3.93%  ±5.23%  ±6.83%
misc/object-property-bench.js n=1000000000 method='property'                                                                           -2.07 %       ±5.23%  ±6.99%  ±9.16%
misc/object-property-bench.js n=1000000000 method='string'                                                                       *     -1.57 %       ±1.39%  ±1.85%  ±2.41%
misc/object-property-bench.js n=1000000000 method='symbol'                                                                             -5.42 %       ±6.20%  ±8.30% ±10.90%
misc/object-property-bench.js n=1000000000 method='variable'                                                                            0.49 %       ±3.14%  ±4.21%  ±5.54%
misc/print.js code='1' dur=1                                                                                                            0.38 %       ±1.12%  ±1.49%  ±1.94%
misc/print.js code='process' dur=1                                                                                                      1.14 %       ±1.29%  ±1.71%  ±2.23%
misc/print.js code='process.versions' dur=1                                                                                            -0.90 %       ±1.24%  ±1.66%  ±2.16%
misc/print.js code='"string"' dur=1                                                                                                    -0.14 %       ±1.24%  ±1.65%  ±2.15%
misc/punycode.js val='belgië.icom.museum' n=1024 method='icu'                                                                          -6.79 %       ±6.84%  ±9.11% ±11.88%
misc/punycode.js val='belgië.icom.museum' n=1024 method='punycode'                                                                     -2.89 %       ±5.33%  ±7.09%  ±9.23%
misc/punycode.js val='českárepublika.icom.museum' n=1024 method='icu'                                                                   3.00 %       ±8.14% ±10.83% ±14.10%
misc/punycode.js val='českárepublika.icom.museum' n=1024 method='punycode'                                                              0.76 %       ±5.01%  ±6.67%  ±8.69%
misc/punycode.js val='éire.icom.museum' n=1024 method='icu'                                                                            -7.59 %       ±7.76% ±10.32% ±13.43%
misc/punycode.js val='éire.icom.museum' n=1024 method='punycode'                                                                        3.58 %       ±6.67%  ±8.88% ±11.56%
misc/punycode.js val='ísland.icom.museum' n=1024 method='icu'                                                                           2.60 %       ±7.74% ±10.32% ±13.45%
misc/punycode.js val='ísland.icom.museum' n=1024 method='punycode'                                                                      0.43 %       ±5.40%  ±7.18%  ±9.35%
misc/punycode.js val='magyarország.icom.museum' n=1024 method='icu'                                                                     4.39 %       ±6.96%  ±9.29% ±12.15%
misc/punycode.js val='magyarország.icom.museum' n=1024 method='punycode'                                                               -1.92 %       ±5.18%  ±6.92%  ±9.07%
misc/punycode.js val='österreich.icom.museum' n=1024 method='icu'                                                                *     -8.06 %       ±7.36%  ±9.84% ±12.89%
misc/punycode.js val='österreich.icom.museum' n=1024 method='punycode'                                                                  2.76 %       ±5.23%  ±6.96%  ±9.07%
misc/punycode.js val='افغانستا.icom.museum' n=1024 method='icu'                                                                        -4.31 %       ±5.48%  ±7.30%  ±9.51%
misc/punycode.js val='افغانستا.icom.museum' n=1024 method='punycode'                                                                    0.70 %       ±4.12%  ±5.48%  ±7.13%
misc/punycode.js val='الأردن.icom.museum' n=1024 method='icu'                                                                           1.59 %       ±5.75%  ±7.64%  ±9.95%
misc/punycode.js val='الأردن.icom.museum' n=1024 method='punycode'                                                                     -1.89 %       ±4.55%  ±6.05%  ±7.89%
misc/punycode.js val='الجزائر.icom.museum' n=1024 method='icu'                                                                         -3.99 %       ±9.67% ±12.88% ±16.77%
misc/punycode.js val='الجزائر.icom.museum' n=1024 method='punycode'                                                                     6.42 %       ±6.43%  ±8.56% ±11.15%
misc/punycode.js val='القمر.icom.museum' n=1024 method='icu'                                                                           -2.56 %       ±8.16% ±10.86% ±14.15%
misc/punycode.js val='القمر.icom.museum' n=1024 method='punycode'                                                                       0.20 %       ±2.92%  ±3.88%  ±5.05%
misc/punycode.js val='ايران.icom.museum' n=1024 method='icu'                                                                           -1.77 %       ±7.78% ±10.36% ±13.48%
misc/punycode.js val='ايران.icom.museum' n=1024 method='punycode'                                                                      -1.23 %       ±5.07%  ±6.75%  ±8.79%
misc/punycode.js val='تشادر.icom.museum' n=1024 method='icu'                                                                           -2.48 %       ±7.98% ±10.62% ±13.85%
misc/punycode.js val='تشادر.icom.museum' n=1024 method='punycode'                                                                      -0.35 %       ±4.38%  ±5.84%  ±7.63%
misc/punycode.js val='مصر.icom.museum' n=1024 method='icu'                                                                             -2.59 %       ±6.88%  ±9.16% ±11.93%
misc/punycode.js val='مصر.icom.museum' n=1024 method='punycode'                                                                         1.88 %       ±4.26%  ±5.67%  ±7.37%
misc/punycode.js val='איקו״ם.ישראל.museum' n=1024 method='icu'                                                                          3.24 %       ±8.51% ±11.33% ±14.75%
misc/punycode.js val='איקו״ם.ישראל.museum' n=1024 method='punycode'                                                                     0.47 %       ±5.73%  ±7.63%  ±9.93%
misc/punycode.js val='ελλάδα.icom.museum' n=1024 method='icu'                                                                           7.46 %       ±9.00% ±12.05% ±15.85%
misc/punycode.js val='ελλάδα.icom.museum' n=1024 method='punycode'                                                                      0.19 %       ±4.47%  ±5.96%  ±7.77%
misc/punycode.js val='κυπρος.icom.museum' n=1024 method='icu'                                                                          -5.21 %       ±7.01%  ±9.36% ±12.26%
misc/punycode.js val='κυπρος.icom.museum' n=1024 method='punycode'                                                                      0.66 %       ±5.04%  ±6.71%  ±8.75%
misc/punycode.js val='беларусь.icom.museum' n=1024 method='icu'                                                                         0.74 %       ±8.74% ±11.64% ±15.17%
misc/punycode.js val='беларусь.icom.museum' n=1024 method='punycode'                                                                    2.84 %       ±4.59%  ±6.11%  ±7.96%
misc/punycode.js val='българия.icom.museum' n=1024 method='icu'                                                                        -4.73 %       ±9.18% ±12.23% ±15.94%
misc/punycode.js val='българия.icom.museum' n=1024 method='punycode'                                                            **      8.49 %       ±5.64%  ±7.51%  ±9.78%
misc/punycode.js val='भारत.icom.museum' n=1024 method='icu'                                                                            -2.21 %       ±6.93%  ±9.23% ±12.06%
misc/punycode.js val='भारत.icom.museum' n=1024 method='punycode'                                                                       -2.60 %       ±4.14%  ±5.52%  ±7.19%
misc/punycode.js val='বাংলাদেশ.icom.museum' n=1024 method='icu'                                                                         0.55 %       ±7.94% ±10.57% ±13.75%
misc/punycode.js val='বাংলাদেশ.icom.museum' n=1024 method='punycode'                                                                    1.97 %       ±6.04%  ±8.03% ±10.45%
misc/punycode.js val='中国.icom.museum' n=1024 method='icu'                                                                            -4.66 %       ±7.71% ±10.29% ±13.48%
misc/punycode.js val='中国.icom.museum' n=1024 method='punycode'                                                                        3.37 %       ±6.20%  ±8.26% ±10.77%
misc/punycode.js val='日本.icom.museum' n=1024 method='icu'                                                                             1.42 %       ±4.99%  ±6.66%  ±8.69%
misc/punycode.js val='日本.icom.museum' n=1024 method='punycode'                                                                       -1.80 %       ±4.55%  ±6.05%  ±7.88%
misc/startup.js mode='process' script='benchmark/fixtures/require-builtins' dur=1                                                       0.59 %       ±1.83%  ±2.43%  ±3.17%
misc/startup.js mode='process' script='benchmark/fixtures/require-cachable' dur=1                                                       0.09 %       ±1.50%  ±2.00%  ±2.60%
misc/startup.js mode='process' script='test/fixtures/semicolon' dur=1                                                                  -0.43 %       ±1.22%  ±1.63%  ±2.12%
misc/startup.js mode='worker' script='benchmark/fixtures/require-builtins' dur=1                                                       -0.96 %       ±3.48%  ±4.64%  ±6.05%
misc/startup.js mode='worker' script='benchmark/fixtures/require-cachable' dur=1                                                        0.26 %       ±2.73%  ±3.63%  ±4.74%
misc/startup.js mode='worker' script='test/fixtures/semicolon' dur=1                                                                   -2.50 %       ±2.68%  ±3.56%  ±4.64%
misc/trace.js method='isTraceCategoryEnabled' n=100000                                                                                 -5.81 %       ±6.64%  ±8.86% ±11.56%
misc/trace.js method='trace' n=100000                                                                                                  -1.62 %       ±4.37%  ±5.83%  ±7.62%
misc/util-extend-vs-object-assign.js n=100000 type='assign'                                                                             1.27 %       ±1.86%  ±2.48%  ±3.24%
misc/util-extend-vs-object-assign.js n=100000 type='extend'                                                                            -0.43 %       ±2.67%  ±3.56%  ±4.64%
module/module-loader-circular.js n=10000                                                                                               -0.75 %       ±3.55%  ±4.72%  ±6.15%
module/module-loader-deep.js cache='false' files=1000 ext=''                                                                           -2.59 %       ±2.82%  ±3.75%  ±4.89%
module/module-loader-deep.js cache='false' files=1000 ext='.js'                                                                         1.41 %       ±4.10%  ±5.46%  ±7.11%
module/module-loader-deep.js cache='true' files=1000 ext=''                                                                             0.48 %       ±6.22%  ±8.28% ±10.78%
module/module-loader-deep.js cache='true' files=1000 ext='.js'                                                                          2.31 %       ±4.74%  ±6.32%  ±8.26%
module/module-loader.js cache='false' n=1000 files=500 dir='abs' name='/'                                                              -0.61 %       ±2.41%  ±3.21%  ±4.17%
module/module-loader.js cache='false' n=1000 files=500 dir='abs' name=''                                                               -0.66 %       ±3.74%  ±4.99%  ±6.50%
module/module-loader.js cache='false' n=1000 files=500 dir='abs' name='/index.js'                                                       1.86 %       ±3.98%  ±5.33%  ±7.00%
module/module-loader.js cache='false' n=1000 files=500 dir='rel' name='/'                                                               1.01 %       ±3.50%  ±4.66%  ±6.10%
module/module-loader.js cache='false' n=1000 files=500 dir='rel' name=''                                                                1.66 %       ±2.66%  ±3.54%  ±4.61%
module/module-loader.js cache='false' n=1000 files=500 dir='rel' name='/index.js'                                                      -0.25 %       ±3.93%  ±5.24%  ±6.85%
module/module-loader.js cache='false' n=1 files=500 dir='abs' name='/'                                                                 -2.53 %       ±5.49%  ±7.30%  ±9.50%
module/module-loader.js cache='false' n=1 files=500 dir='abs' name=''                                                                   0.31 %       ±4.81%  ±6.41%  ±8.35%
module/module-loader.js cache='false' n=1 files=500 dir='abs' name='/index.js'                                                          0.89 %       ±4.74%  ±6.30%  ±8.21%
module/module-loader.js cache='false' n=1 files=500 dir='rel' name='/'                                                                  1.14 %       ±5.01%  ±6.68%  ±8.70%
module/module-loader.js cache='false' n=1 files=500 dir='rel' name=''                                                                   4.64 %       ±4.64%  ±6.18%  ±8.04%
module/module-loader.js cache='false' n=1 files=500 dir='rel' name='/index.js'                                                          0.18 %       ±4.43%  ±5.90%  ±7.68%
module/module-loader.js cache='true' n=1000 files=500 dir='abs' name='/'                                                                1.00 %       ±1.85%  ±2.48%  ±3.27%
module/module-loader.js cache='true' n=1000 files=500 dir='abs' name=''                                                                 2.95 %       ±4.59%  ±6.16%  ±8.13%
module/module-loader.js cache='true' n=1000 files=500 dir='abs' name='/index.js'                                                       -0.54 %       ±1.18%  ±1.58%  ±2.06%
module/module-loader.js cache='true' n=1000 files=500 dir='rel' name='/'                                                                0.43 %       ±2.40%  ±3.22%  ±4.24%
module/module-loader.js cache='true' n=1000 files=500 dir='rel' name=''                                                                -0.18 %       ±1.70%  ±2.27%  ±2.97%
module/module-loader.js cache='true' n=1000 files=500 dir='rel' name='/index.js'                                                        0.36 %       ±1.53%  ±2.03%  ±2.65%
module/module-loader.js cache='true' n=1 files=500 dir='abs' name='/'                                                                  -0.57 %       ±4.78%  ±6.40%  ±8.43%
module/module-loader.js cache='true' n=1 files=500 dir='abs' name=''                                                                    1.82 %       ±7.27%  ±9.68% ±12.62%
module/module-loader.js cache='true' n=1 files=500 dir='abs' name='/index.js'                                                          -0.75 %       ±4.41%  ±5.91%  ±7.80%
module/module-loader.js cache='true' n=1 files=500 dir='rel' name='/'                                                                  -2.60 %       ±5.53%  ±7.44%  ±9.84%
module/module-loader.js cache='true' n=1 files=500 dir='rel' name=''                                                                   -0.34 %       ±3.34%  ±4.45%  ±5.79%
module/module-loader.js cache='true' n=1 files=500 dir='rel' name='/index.js'                                                          -3.56 %       ±6.92%  ±9.21% ±12.01%
module/module-require.js n=10000 type='dir'                                                                                            -2.30 %       ±9.01% ±11.99% ±15.61%
module/module-require.js n=10000 type='.js'                                                                                            -0.71 %       ±7.49%  ±9.96% ±12.96%
module/module-require.js n=10000 type='.json'                                                                                          -1.15 %       ±8.30% ±11.05% ±14.38%
util/format.js type='many-%' n=100000                                                                                                  -0.32 %       ±5.30%  ±7.06%  ±9.19%
util/format.js type='no-replace-2' n=100000                                                                                            -3.48 %       ±5.28%  ±7.03%  ±9.15%
util/format.js type='no-replace' n=100000                                                                                               1.89 %       ±6.28%  ±8.36% ±10.90%
util/format.js type='number' n=100000                                                                                                  -3.69 %       ±7.24%  ±9.64% ±12.56%
util/format.js type='object-%s' n=100000                                                                                       ***     -4.36 %       ±2.24%  ±2.98%  ±3.89%
util/format.js type='object-to-string' n=100000                                                                                         4.07 %       ±5.02%  ±6.70%  ±8.76%
util/format.js type='only-objects' n=100000                                                                                            -0.68 %       ±2.33%  ±3.10%  ±4.04%
util/format.js type='replace-object' n=100000                                                                                          -2.01 %       ±5.22%  ±6.95%  ±9.06%
util/format.js type='string-2' n=100000                                                                                                 0.17 %       ±5.52%  ±7.34%  ±9.56%
util/format.js type='string' n=100000                                                                                                   0.84 %       ±5.64%  ±7.51%  ±9.77%
util/format.js type='unknown' n=100000                                                                                                  2.44 %       ±5.36%  ±7.13%  ±9.28%
util/inspect-array.js type='denseArray' len=100000 n=500                                                                               -0.79 %       ±5.71%  ±7.60%  ±9.89%
util/inspect-array.js type='denseArray' len=100 n=500                                                                                   1.33 %       ±6.33%  ±8.45% ±11.04%
util/inspect-array.js type='denseArray_showHidden' len=100000 n=500                                                                     1.54 %       ±5.12%  ±6.81%  ±8.86%
util/inspect-array.js type='denseArray_showHidden' len=100 n=500                                                                       -0.70 %       ±5.75%  ±7.65%  ±9.96%
util/inspect-array.js type='mixedArray' len=100000 n=500                                                                                1.18 %       ±2.97%  ±3.95%  ±5.15%
util/inspect-array.js type='mixedArray' len=100 n=500                                                                                   1.89 %       ±3.46%  ±4.61%  ±6.02%
util/inspect-array.js type='sparseArray' len=100000 n=500                                                                               0.59 %       ±4.24%  ±5.65%  ±7.35%
util/inspect-array.js type='sparseArray' len=100 n=500                                                                                  2.97 %       ±6.44%  ±8.57% ±11.15%
util/inspect.js option='colors' method='Array' n=20000                                                                                  1.94 %       ±3.10%  ±4.13%  ±5.39%
util/inspect.js option='colors' method='Date' n=20000                                                                                  -2.34 %       ±5.75%  ±7.65%  ±9.97%
util/inspect.js option='colors' method='Error' n=20000                                                                                  0.93 %       ±4.32%  ±5.75%  ±7.48%
util/inspect.js option='colors' method='Number' n=20000                                                                                 2.50 %       ±5.53%  ±7.37%  ±9.63%
util/inspect.js option='colors' method='Object_deep_ln' n=20000                                                                 **     -2.64 %       ±1.77%  ±2.35%  ±3.06%
util/inspect.js option='colors' method='Object_empty' n=20000                                                                           3.79 %       ±6.42%  ±8.58% ±11.25%
util/inspect.js option='colors' method='Object' n=20000                                                                                -1.96 %       ±3.43%  ±4.56%  ±5.94%
util/inspect.js option='colors' method='Set' n=20000                                                                                    2.61 %       ±5.36%  ±7.13%  ±9.28%
util/inspect.js option='colors' method='String_boxed' n=20000                                                                           2.66 %       ±5.38%  ±7.16%  ±9.33%
util/inspect.js option='colors' method='String_complex' n=20000                                                                        -0.99 %       ±6.44%  ±8.56% ±11.15%
util/inspect.js option='colors' method='String' n=20000                                                                                -2.93 %       ±6.46%  ±8.61% ±11.24%
util/inspect.js option='colors' method='TypedArray_extra' n=20000                                                               **      4.29 %       ±3.10%  ±4.12%  ±5.37%
util/inspect.js option='colors' method='TypedArray' n=20000                                                                             1.36 %       ±2.72%  ±3.63%  ±4.74%
util/inspect.js option='none' method='Array' n=20000                                                                                   -1.18 %       ±6.92%  ±9.21% ±12.00%
util/inspect.js option='none' method='Date' n=20000                                                                                    -0.58 %       ±5.92%  ±7.88% ±10.26%
util/inspect.js option='none' method='Error' n=20000                                                                                   -0.85 %       ±5.22%  ±6.95%  ±9.04%
util/inspect.js option='none' method='Number' n=20000                                                                                  -1.00 %       ±6.40%  ±8.51% ±11.08%
util/inspect.js option='none' method='Object_deep_ln' n=20000                                                                  ***     -4.50 %       ±2.28%  ±3.04%  ±3.97%
util/inspect.js option='none' method='Object_empty' n=20000                                                                             0.21 %       ±6.68%  ±8.89% ±11.59%
util/inspect.js option='none' method='Object' n=20000                                                                            *     -5.11 %       ±4.18%  ±5.57%  ±7.26%
util/inspect.js option='none' method='Set' n=20000                                                                                      3.70 %       ±5.31%  ±7.08%  ±9.22%
util/inspect.js option='none' method='String_boxed' n=20000                                                                     **     -7.03 %       ±5.24%  ±6.97%  ±9.07%
util/inspect.js option='none' method='String_complex' n=20000                                                                          -2.84 %       ±6.52%  ±8.68% ±11.31%
util/inspect.js option='none' method='String' n=20000                                                                                   0.90 %       ±7.37%  ±9.80% ±12.76%
util/inspect.js option='none' method='TypedArray_extra' n=20000                                                                        -0.67 %       ±4.04%  ±5.40%  ±7.08%
util/inspect.js option='none' method='TypedArray' n=20000                                                                               1.64 %       ±5.64%  ±7.55%  ±9.91%
util/inspect.js option='showHidden' method='Array' n=20000                                                                              0.09 %       ±1.36%  ±1.82%  ±2.37%
util/inspect.js option='showHidden' method='Date' n=20000                                                                               4.26 %       ±6.66%  ±8.90% ±11.69%
util/inspect.js option='showHidden' method='Error' n=20000                                                                       *     -3.10 %       ±2.41%  ±3.20%  ±4.17%
util/inspect.js option='showHidden' method='Number' n=20000                                                                             3.69 %       ±3.90%  ±5.20%  ±6.80%
util/inspect.js option='showHidden' method='Object_deep_ln' n=20000                                                             **     -4.65 %       ±3.28%  ±4.37%  ±5.69%
util/inspect.js option='showHidden' method='Object_empty' n=20000                                                                       0.60 %       ±7.20%  ±9.58% ±12.48%
util/inspect.js option='showHidden' method='Object' n=20000                                                                            -3.12 %       ±4.45%  ±5.93%  ±7.72%
util/inspect.js option='showHidden' method='Set' n=20000                                                                               -0.17 %       ±4.85%  ±6.46%  ±8.42%
util/inspect.js option='showHidden' method='String_boxed' n=20000                                                                       2.92 %       ±4.94%  ±6.57%  ±8.56%
util/inspect.js option='showHidden' method='String_complex' n=20000                                                                    -3.07 %       ±7.34%  ±9.77% ±12.72%
util/inspect.js option='showHidden' method='String' n=20000                                                                            -3.16 %       ±6.02%  ±8.03% ±10.50%
util/inspect.js option='showHidden' method='TypedArray_extra' n=20000                                                                   0.30 %       ±4.72%  ±6.29%  ±8.21%
util/inspect.js option='showHidden' method='TypedArray' n=20000                                                                        -1.46 %       ±2.23%  ±2.97%  ±3.86%
util/inspect-proxy.js isProxy=0 showProxy=0 n=100000                                                                                    0.52 %       ±2.92%  ±3.90%  ±5.12%
util/inspect-proxy.js isProxy=0 showProxy=1 n=100000                                                                                   -0.25 %       ±1.69%  ±2.25%  ±2.93%
util/inspect-proxy.js isProxy=1 showProxy=0 n=100000                                                                                   -1.52 %       ±1.89%  ±2.51%  ±3.27%
util/inspect-proxy.js isProxy=1 showProxy=1 n=100000                                                                                   -1.31 %       ±2.61%  ±3.47%  ±4.52%
util/normalize-encoding.js n=100000 input=''                                                                                            2.12 %       ±5.43%  ±7.24%  ±9.46%
util/normalize-encoding.js n=100000 input='base64'                                                                                      2.08 %       ±6.45%  ±8.63% ±11.32%
util/normalize-encoding.js n=100000 input='BASE64'                                                                                      3.16 %       ±5.09%  ±6.77%  ±8.81%
util/normalize-encoding.js n=100000 input='binary'                                                                                      1.78 %       ±6.00%  ±8.02% ±10.51%
util/normalize-encoding.js n=100000 input='BINARY'                                                                                     -0.00 %       ±8.00% ±10.65% ±13.87%
util/normalize-encoding.js n=100000 input='foo'                                                                                         1.14 %       ±4.11%  ±5.47%  ±7.12%
util/normalize-encoding.js n=100000 input='group_common'                                                                                2.74 %       ±5.85%  ±7.80% ±10.18%
util/normalize-encoding.js n=100000 input='group_misc'                                                                                  0.80 %       ±6.12%  ±8.15% ±10.62%
util/normalize-encoding.js n=100000 input='group_uncommon'                                                                       *      5.01 %       ±4.56%  ±6.09%  ±7.96%
util/normalize-encoding.js n=100000 input='group_upper'                                                                                -2.09 %       ±6.06%  ±8.09% ±10.58%
util/normalize-encoding.js n=100000 input='hex'                                                                                         6.59 %       ±8.20% ±10.92% ±14.23%
util/normalize-encoding.js n=100000 input='HEX'                                                                                 **      9.37 %       ±6.77%  ±9.04% ±11.81%
util/normalize-encoding.js n=100000 input='latin1'                                                                                      0.53 %       ±6.31%  ±8.40% ±10.94%
util/normalize-encoding.js n=100000 input='ucs2'                                                                                       -0.19 %       ±6.52%  ±8.69% ±11.33%
util/normalize-encoding.js n=100000 input='UCS2'                                                                                       -3.71 %       ±6.48%  ±8.62% ±11.23%
util/normalize-encoding.js n=100000 input='undefined'                                                                                  -1.19 %       ±7.16%  ±9.53% ±12.43%
util/normalize-encoding.js n=100000 input='utf16le'                                                                            ***     -9.39 %       ±5.00%  ±6.66%  ±8.69%
util/normalize-encoding.js n=100000 input='UTF16LE'                                                                                     1.33 %       ±5.93%  ±7.90% ±10.30%
util/normalize-encoding.js n=100000 input='utf-8'                                                                                      -1.36 %       ±7.67% ±10.20% ±13.28%
util/normalize-encoding.js n=100000 input='utf8'                                                                                        1.05 %       ±7.09%  ±9.43% ±12.28%
util/normalize-encoding.js n=100000 input='Utf8'                                                                                       -0.22 %       ±7.51% ±10.00% ±13.03%
util/normalize-encoding.js n=100000 input='UTF-8'                                                                                       1.08 %       ±6.56%  ±8.72% ±11.35%
util/normalize-encoding.js n=100000 input='UTF8'                                                                                       -5.43 %       ±5.54%  ±7.38%  ±9.61%
util/priority-queue.js n=100000                                                                                                         1.39 %       ±6.42%  ±8.54% ±11.12%
util/splice-one.js size=100 pos='end' n=100000                                                                                         -3.07 %       ±4.64%  ±6.17%  ±8.03%
util/splice-one.js size=100 pos='middle' n=100000                                                                                      -0.35 %       ±6.35%  ±8.45% ±11.00%
util/splice-one.js size=100 pos='start' n=100000                                                                                       -3.15 %       ±6.19%  ±8.25% ±10.75%
util/splice-one.js size=10 pos='end' n=100000                                                                                           1.43 %       ±6.17%  ±8.21% ±10.69%
util/splice-one.js size=10 pos='middle' n=100000                                                                                       -2.72 %       ±4.99%  ±6.65%  ±8.66%
util/splice-one.js size=10 pos='start' n=100000                                                                                        -4.18 %       ±5.63%  ±7.50%  ±9.78%
util/splice-one.js size=500 pos='end' n=100000                                                                                         -1.86 %       ±5.17%  ±6.88%  ±8.95%
util/splice-one.js size=500 pos='middle' n=100000                                                                                      -2.63 %       ±4.79%  ±6.38%  ±8.31%
util/splice-one.js size=500 pos='start' n=100000                                                                                       -0.96 %       ±2.79%  ±3.71%  ±4.83%
util/to-usv-string.js size=100 n=100000                                                                                                -0.30 %       ±2.01%  ±2.67%  ±3.48%
util/to-usv-string.js size=10 n=100000                                                                                                  2.03 %       ±9.23% ±12.38% ±16.33%
util/to-usv-string.js size=500 n=100000                                                                                                 0.61 %       ±2.72%  ±3.62%  ±4.71%
util/type-check.js n=100000 argument='false-object' version='js' type='ArrayBufferView'                                                 1.62 %       ±7.84% ±10.43% ±13.58%
util/type-check.js n=100000 argument='false-object' version='js' type='TypedArray'                                                      0.30 %       ±6.43%  ±8.58% ±11.19%
util/type-check.js n=100000 argument='false-object' version='js' type='Uint8Array'                                                     -2.83 %       ±5.96%  ±7.94% ±10.33%
util/type-check.js n=100000 argument='false-object' version='native' type='ArrayBufferView'                                             3.12 %       ±5.91%  ±7.87% ±10.24%
util/type-check.js n=100000 argument='false-object' version='native' type='TypedArray'                                                  0.31 %       ±7.60% ±10.12% ±13.18%
util/type-check.js n=100000 argument='false-object' version='native' type='Uint8Array'                                                 -0.52 %       ±5.69%  ±7.57%  ±9.85%
util/type-check.js n=100000 argument='false-primitive' version='js' type='ArrayBufferView'                                              3.07 %       ±7.25%  ±9.65% ±12.56%
util/type-check.js n=100000 argument='false-primitive' version='js' type='TypedArray'                                                   0.94 %       ±7.43%  ±9.89% ±12.87%
util/type-check.js n=100000 argument='false-primitive' version='js' type='Uint8Array'                                                   4.83 %       ±5.84%  ±7.80% ±10.20%
util/type-check.js n=100000 argument='false-primitive' version='native' type='ArrayBufferView'                                         -0.66 %       ±7.83% ±10.44% ±13.64%
util/type-check.js n=100000 argument='false-primitive' version='native' type='TypedArray'                                              -0.35 %       ±5.45%  ±7.25%  ±9.44%
util/type-check.js n=100000 argument='false-primitive' version='native' type='Uint8Array'                                               1.19 %       ±6.40%  ±8.55% ±11.21%
util/type-check.js n=100000 argument='true' version='js' type='ArrayBufferView'                                                         5.37 %       ±6.79%  ±9.08% ±11.91%
util/type-check.js n=100000 argument='true' version='js' type='TypedArray'                                                       *      6.58 %       ±6.48%  ±8.65% ±11.32%
util/type-check.js n=100000 argument='true' version='js' type='Uint8Array'                                                             -1.90 %       ±6.30%  ±8.38% ±10.91%
util/type-check.js n=100000 argument='true' version='native' type='ArrayBufferView'                                                     2.49 %       ±5.27%  ±7.02%  ±9.15%
util/type-check.js n=100000 argument='true' version='native' type='TypedArray'                                                          2.09 %       ±5.84%  ±7.77% ±10.12%
util/type-check.js n=100000 argument='true' version='native' type='Uint8Array'                                                         -4.30 %       ±5.48%  ±7.32%  ±9.57%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 470 comparisons, you can thus
expect the following amount of false-positive results:

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@aduh95
Copy link
Contributor Author

aduh95 commented Jun 20, 2022

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1157/

Significant perf regression on `dns.lookup`
                                                              confidence improvement accuracy (*)    (**)   (***)
dns/lookup.js n=5000000 all='false' name='::1'                       ***    -27.27 %       ±2.63%  ±3.51%  ±4.58%
dns/lookup.js n=5000000 all='false' name='127.0.0.1'                 ***    -17.14 %       ±3.75%  ±4.99%  ±6.50%
dns/lookup.js n=5000000 all='true' name='::1'                        ***    -22.96 %       ±2.19%  ±2.91%  ±3.79%
dns/lookup.js n=5000000 all='true' name='127.0.0.1'                  ***    -16.14 %       ±3.61%  ±4.82%  ±6.30%
dns/lookup-promises.js n=5000000 all='false' name='::1'                      -4.02 %       ±9.58% ±12.86% ±16.97%
dns/lookup-promises.js n=5000000 all='false' name='127.0.0.1'                -4.48 %      ±10.97% ±14.70% ±19.34%
dns/lookup-promises.js n=5000000 all='true' name='::1'                        5.02 %      ±11.81% ±15.86% ±20.93%
dns/lookup-promises.js n=5000000 all='true' name='127.0.0.1'                 -4.14 %       ±5.84%  ±7.80% ±10.22%

@aduh95
Copy link
Contributor Author

aduh95 commented Jun 21, 2022

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1158/

Perf regression was fixed on last commit
                                                              confidence improvement accuracy (*)    (**)   (***)
dns/lookup.js n=5000000 all='false' name='::1'                                1.25 %       ±2.33%  ±3.09%  ±4.03%
dns/lookup.js n=5000000 all='false' name='127.0.0.1'                         -1.63 %       ±3.85%  ±5.13%  ±6.68%
dns/lookup.js n=5000000 all='true' name='::1'                                 1.03 %       ±2.17%  ±2.90%  ±3.81%
dns/lookup.js n=5000000 all='true' name='127.0.0.1'                    *     -2.96 %       ±2.96%  ±3.97%  ±5.22%
dns/lookup-promises.js n=5000000 all='false' name='::1'                       0.19 %       ±4.66%  ±6.21%  ±8.10%
dns/lookup-promises.js n=5000000 all='false' name='127.0.0.1'                -3.89 %      ±10.98% ±14.73% ±19.44%
dns/lookup-promises.js n=5000000 all='true' name='::1'                       -6.34 %      ±13.81% ±18.51% ±24.37%
dns/lookup-promises.js n=5000000 all='true' name='127.0.0.1'                  6.83 %       ±6.84%  ±9.13% ±11.92%

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

@aduh95 aduh95 added the request-ci Add this label to start a Jenkins CI on a PR. label Jun 21, 2022
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 21, 2022
@nodejs-github-bot
Copy link
Collaborator

@tniessen
Copy link
Member

Looks like my suspicion about test versus exec was somewhat correct. Not sure if linting is a good idea if the changes are prone to performance regressions.

@aduh95
Copy link
Contributor Author

aduh95 commented Jun 22, 2022

Looks like my suspicion about test versus exec was somewhat correct. Not sure if linting is a good idea if the changes are prone to performance regressions.

It was indeed. IMO landing this is still worth it even if we don't fix the linting rule, which you can object to on its own PR: #43476 – it'd be fine to remove the RegExpPrototypeTest checks from the lint rule if we are worried that this kind of perf regressions could become more frequent.

@nodejs-github-bot
Copy link
Collaborator

@aduh95
Copy link
Contributor Author

aduh95 commented Jun 27, 2022

Landed in a055337

@aduh95 aduh95 deleted the no-unsafe-regex-primordials branch June 27, 2022 15:16
targos pushed a commit that referenced this pull request Jul 12, 2022
PR-URL: #43475
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
aduh95 added a commit to aduh95/node that referenced this pull request Aug 1, 2022
PR-URL: nodejs#43475
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
aduh95 added a commit to aduh95/node that referenced this pull request Aug 1, 2022
PR-URL: nodejs#43475
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
targos pushed a commit that referenced this pull request Aug 2, 2022
PR-URL: #43475
Backport-PR-URL: #44081
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
aduh95 added a commit that referenced this pull request Oct 8, 2022
guangwong pushed a commit to noslate-project/node that referenced this pull request Oct 10, 2022
PR-URL: nodejs/node#43475
Backport-PR-URL: nodejs/node#44081
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
aduh95 added a commit that referenced this pull request Oct 11, 2022
aduh95 added a commit that referenced this pull request Oct 11, 2022
richardlau pushed a commit that referenced this pull request Nov 23, 2022
@richardlau richardlau mentioned this pull request Dec 8, 2022
mwalbeck pushed a commit to mwalbeck/docker-cyberchef that referenced this pull request Dec 14, 2022
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://github.com/nodejs/node) | stage | minor | `16.18.1-bullseye` -> `16.19.0-bullseye` |

---

### Release Notes

<details>
<summary>nodejs/node</summary>

### [`v16.19.0`](https://github.com/nodejs/node/releases/tag/v16.19.0): 2022-12-13, Version 16.19.0 &#x27;Gallium&#x27; (LTS), @&#8203;richardlau

[Compare Source](nodejs/node@v16.18.1...v16.19.0)

##### Notable Changes

##### OpenSSL 1.1.1s

This update is a bugfix release and does not address any security
vulnerabilities.

##### Root certificates updated to NSS 3.85

Certificates added:

-   Autoridad de Certificacion Firmaprofesional CIF [`A626340`](nodejs/node@A62634068)
-   Certainly Root E1
-   Certainly Root R1
-   D-TRUST BR Root CA 1 2020
-   D-TRUST EV Root CA 1 2020
-   DigiCert TLS ECC P384 Root G5
-   DigiCert TLS RSA4096 Root G5
-   E-Tugra Global Root CA ECC v3
-   E-Tugra Global Root CA RSA v3
-   HiPKI Root CA - G1
-   ISRG Root X2
-   Security Communication ECC RootCA1
-   Security Communication RootCA3
-   Telia Root CA v2
-   vTrus ECC Root CA
-   vTrus Root CA

Certificates removed:

-   Cybertrust Global Root
-   DST Root CA X3
-   GlobalSign Root CA - R2
-   Hellenic Academic and Research Institutions RootCA 2011

##### Time zone update to 2022f

Time zone data has been updated to 2022f. This includes changes to Daylight
Savings Time (DST) for Fiji and Mexico. For more information, see
<https://mm.icann.org/pipermail/tz-announce/2022-October/000075.html>.

##### Other Notable Changes

-   \[[`33707dcd03`](nodejs/node@33707dcd03)] - **dgram**: add dgram send queue info (theanarkh) [#&#8203;44149](nodejs/node#44149)

Dependency updates:

-   \[[`3b2b70d792`](nodejs/node@3b2b70d792)] - **deps**: upgrade npm to 8.19.3 (npm team) [#&#8203;45322](nodejs/node#45322)

Experimental features:

-   \[[`1e0dcd1ee0`](nodejs/node@1e0dcd1ee0)] - **cli**: add `--watch` (Moshe Atlow) [#&#8203;44366](nodejs/node#44366)
-   \[[`8c73279ebb`](nodejs/node@8c73279ebb)] - **util**: add default value option to parsearg (Manuel Spigolon) [#&#8203;44631](nodejs/node#44631)

##### Commits

-   \[[`bbef3c42f6`](nodejs/node@bbef3c42f6)] - **build**: add version info to timezone update PR (Darshan Sen) [#&#8203;45021](nodejs/node#45021)
-   \[[`cc2c7648e0`](nodejs/node@cc2c7648e0)] - **build**: support Python 3.11 (Luigi Pinca) [#&#8203;45191](nodejs/node#45191)
-   \[[`ac24c80663`](nodejs/node@ac24c80663)] - **build**: remove redundant condition from common.gypi (Richard Lau) [#&#8203;45076](nodejs/node#45076)
-   \[[`03dcbe3030`](nodejs/node@03dcbe3030)] - **build**: fix bad upstream merge (Stephen Gallagher) [#&#8203;44642](nodejs/node#44642)
-   \[[`1e0dcd1ee0`](nodejs/node@1e0dcd1ee0)] - **cli**: add `--watch` (Moshe Atlow) [#&#8203;44366](nodejs/node#44366)
-   \[[`96d131665e`](nodejs/node@96d131665e)] - **cluster**: use inspector utils (Moshe Atlow) [#&#8203;44592](nodejs/node#44592)
-   \[[`704836033a`](nodejs/node@704836033a)] - **crypto**: update root certificates (Luigi Pinca) [#&#8203;45490](nodejs/node#45490)
-   \[[`5a776d4a69`](nodejs/node@5a776d4a69)] - **deps**: update timezone to 2022f (Richard Lau) [#&#8203;45613](nodejs/node#45613)
-   \[[`3b2b70d792`](nodejs/node@3b2b70d792)] - **deps**: upgrade npm to 8.19.3 (npm team) [#&#8203;45322](nodejs/node#45322)
-   \[[`9fbc8b21db`](nodejs/node@9fbc8b21db)] - **deps**: update corepack to 0.15.1 (Node.js GitHub Bot) [#&#8203;45331](nodejs/node#45331)
-   \[[`87e3d002ca`](nodejs/node@87e3d002ca)] - **deps**: update corepack to 0.15.0 (Node.js GitHub Bot) [#&#8203;45235](nodejs/node#45235)
-   \[[`e972ff7b13`](nodejs/node@e972ff7b13)] - **deps**: V8: backport [`bbd800c`](nodejs/node@bbd800c6e359) (Chengzhong Wu) [#&#8203;44947](nodejs/node#44947)
-   \[[`af9d8217c0`](nodejs/node@af9d8217c0)] - **deps**: V8: cherry-pick [`b953542`](nodejs/node@b95354290941) (Chengzhong Wu) [#&#8203;44947](nodejs/node#44947)
-   \[[`38202d321b`](nodejs/node@38202d321b)] - **deps**: update undici to 5.12.0 (Node.js GitHub Bot) [#&#8203;45236](nodejs/node#45236)
-   \[[`7c0da6adf9`](nodejs/node@7c0da6adf9)] - **deps**: update archs files for OpenSSL-1.1.1s (RafaelGSS) [#&#8203;45274](nodejs/node#45274)
-   \[[`1149ead6f7`](nodejs/node@1149ead6f7)] - **deps**: upgrade openssl sources to OpenSSL\_1\_1\_1s (RafaelGSS) [#&#8203;45274](nodejs/node#45274)
-   \[[`cd54bce4f5`](nodejs/node@cd54bce4f5)] - **deps**: update timezone (Node.js GitHub Bot) [#&#8203;44950](nodejs/node#44950)
-   \[[`2901abe4f0`](nodejs/node@2901abe4f0)] - **deps**: update undici to 5.11.0 (Node.js GitHub Bot) [#&#8203;44929](nodejs/node#44929)
-   \[[`c80cf97033`](nodejs/node@c80cf97033)] - **deps**: update corepack to 0.14.2 (Node.js GitHub Bot) [#&#8203;44775](nodejs/node#44775)
-   \[[`33707dcd03`](nodejs/node@33707dcd03)] - **dgram**: add dgram send queue info (theanarkh) [#&#8203;44149](nodejs/node#44149)
-   \[[`c708d9bb94`](nodejs/node@c708d9bb94)] - **doc**: fix typo in parseArgs default value (Tobias Nießen) [#&#8203;45083](nodejs/node#45083)
-   \[[`5a0efa05d2`](nodejs/node@5a0efa05d2)] - **node-api**: handle no support for external buffers (Michael Dawson) [#&#8203;45181](nodejs/node#45181)
-   \[[`db31de634e`](nodejs/node@db31de634e)] - **readline**: refactor to avoid unsafe regex primordials (Antoine du Hamel) [#&#8203;43475](nodejs/node#43475)
-   \[[`fbc52e5729`](nodejs/node@fbc52e5729)] - **src**: disambiguate terms used to refer to builtins and addons (Joyee Cheung) [#&#8203;44135](nodejs/node#44135)
-   \[[`953072d3db`](nodejs/node@953072d3db)] - **src**: let http2 streams end after session close (Santiago Gimeno) [#&#8203;45153](nodejs/node#45153)
-   \[[`54608d8dc3`](nodejs/node@54608d8dc3)] - **src**: split property helpers from node::Environment (Chengzhong Wu) [#&#8203;44056](nodejs/node#44056)
-   \[[`6733556783`](nodejs/node@6733556783)] - **test**: add test to validate changelogs for releases (Richard Lau) [#&#8203;45325](nodejs/node#45325)
-   \[[`821d832cef`](nodejs/node@821d832cef)] - **test**: mark test-watch-mode\* as flaky on all platforms (Pierrick Bouvier) [#&#8203;45049](nodejs/node#45049)
-   \[[`02a18eac69`](nodejs/node@02a18eac69)] - **test**: fix test-runner-inspect (Moshe Atlow) [#&#8203;44620](nodejs/node#44620)
-   \[[`197df63f74`](nodejs/node@197df63f74)] - **test**: add a test to ensure the correctness of timezone upgrades (Darshan Sen) [#&#8203;45299](nodejs/node#45299)
-   \[[`42e9d8016a`](nodejs/node@42e9d8016a)] - **test**: fix textdecoder test for small-icu builds (Richard Lau) [#&#8203;45225](nodejs/node#45225)
-   \[[`6d736a56d8`](nodejs/node@6d736a56d8)] - **test**: fix watch mode test flake (Moshe Atlow) [#&#8203;44739](nodejs/node#44739)
-   \[[`543d3d2bf3`](nodejs/node@543d3d2bf3)] - **test**: deflake watch mode tests (Moshe Atlow) [#&#8203;44621](nodejs/node#44621)
-   \[[`97f6caf4eb`](nodejs/node@97f6caf4eb)] - **test**: split watch mode inspector tests to sequential (Moshe Atlow) [#&#8203;44551](nodejs/node#44551)
-   \[[`499750ff7a`](nodejs/node@499750ff7a)] - **test**: update list of known globals (Antoine du Hamel) [#&#8203;45255](nodejs/node#45255)
-   \[[`64d343af74`](nodejs/node@64d343af74)] - **test_runner**: support using `--inspect` with `--test` (Moshe Atlow) [#&#8203;44520](nodejs/node#44520)
-   \[[`99ee5e484d`](nodejs/node@99ee5e484d)] - **test_runner**: fix `duration_ms` to be milliseconds (Moshe Atlow) [#&#8203;44450](nodejs/node#44450)
-   \[[`37e909251c`](nodejs/node@37e909251c)] - **test_runner**: support programmatically running `--test` (Moshe Atlow) [#&#8203;44241](nodejs/node#44241)
-   \[[`0ae5694f88`](nodejs/node@0ae5694f88)] - **tools**: update certdata.txt (Luigi Pinca) [#&#8203;45490](nodejs/node#45490)
-   \[[`891368cefd`](nodejs/node@891368cefd)] - **tools**: remove faulty early termination logic from update-timezone.mjs (Darshan Sen) [#&#8203;44870](nodejs/node#44870)
-   \[[`543493c242`](nodejs/node@543493c242)] - **tools**: fix timezone update tool (Darshan Sen) [#&#8203;44870](nodejs/node#44870)
-   \[[`c77f660b75`](nodejs/node@c77f660b75)] - **tools**: fix `create-or-update-pull-request-action` hash on GHA (Antoine du Hamel) [#&#8203;45166](nodejs/node#45166)
-   \[[`58c30dd049`](nodejs/node@58c30dd049)] - **tools**: update gr2m/create-or-update-pull-request-action (Luigi Pinca) [#&#8203;45022](nodejs/node#45022)
-   \[[`749a4b3e5e`](nodejs/node@749a4b3e5e)] - **tools**: use Python 3.11 in GitHub Actions workflows (Luigi Pinca) [#&#8203;45191](nodejs/node#45191)
-   \[[`6f541d99a5`](nodejs/node@6f541d99a5)] - **tools**: have test-asan use ubuntu-20.04 (Filip Skokan) [#&#8203;45581](nodejs/node#45581)
-   \[[`e7ed56f501`](nodejs/node@e7ed56f501)] - **tools**: make license-builder.sh comply with shellcheck 0.8.0 (Rich Trott) [#&#8203;41258](nodejs/node#41258)
-   \[[`cc819b4bf8`](nodejs/node@cc819b4bf8)] - **tools**: fix typo in `avoid-prototype-pollution` lint rule (Antoine du Hamel) [#&#8203;44446](nodejs/node#44446)
-   \[[`254358c81e`](nodejs/node@254358c81e)] - **tools**: refactor `avoid-prototype-pollution` lint rule (Antoine du Hamel) [#&#8203;43476](nodejs/node#43476)
-   \[[`8c73279ebb`](nodejs/node@8c73279ebb)] - **util**: add default value option to parsearg (Manuel Spigolon) [#&#8203;44631](nodejs/node#44631)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC41NS4wIiwidXBkYXRlZEluVmVyIjoiMzQuNTUuMCJ9-->

Reviewed-on: https://git.walbeck.it/mwalbeck/docker-cyberchef/pulls/143
Co-authored-by: renovate-bot <bot@walbeck.it>
Co-committed-by: renovate-bot <bot@walbeck.it>
guangwong pushed a commit to noslate-project/node that referenced this pull request Jan 3, 2023
guangwong pushed a commit to noslate-project/node that referenced this pull request Jan 3, 2023
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. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants