Skip to content

Conversation

@BridgeAR
Copy link
Member

This makes sure that the toStringTag symbol is used, if available instead of calculating the toString() value each time, if not needed (the type checks make a brand check, so there is no need to check the toStringTag, if non is defined on the object).

This makes sure that the toStringTag symbol is used, if available
instead of calculating the toString() value each time, if not
needed (the type checks make a brand check, so there is no need to
check the toStringTag, if non is defined on the object).
@BridgeAR BridgeAR added needs-ci PRs that need a full CI run. needs-benchmark-ci PR that need a benchmark CI run. labels Dec 26, 2025
@nodejs-github-bot nodejs-github-bot added the util Issues and PRs related to the built-in util module. label Dec 26, 2025
@BridgeAR
Copy link
Member Author

Local benchmark

                                                                                                               confidence improvement accuracy (*)    (**)   (***)
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=0 len=100 n=20000                                  ***     48.99 %       ±4.18%  ±5.62%  ±7.42%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=0 len=1000 n=20000                                 ***     45.90 %       ±1.55%  ±2.06%  ±2.69%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=1 len=100 n=20000                                  ***     54.26 %       ±2.29%  ±3.05%  ±3.97%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=1 len=1000 n=20000                                 ***     47.73 %       ±1.85%  ±2.47%  ±3.24%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=0 len=100 n=20000                                  ***     42.36 %       ±2.36%  ±3.14%  ±4.09%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=0 len=1000 n=20000                                 ***     38.90 %       ±1.57%  ±2.09%  ±2.72%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=1 len=100 n=20000                                  ***     29.63 %       ±2.28%  ±3.03%  ±3.95%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=1 len=1000 n=20000                                 ***     29.96 %       ±1.70%  ±2.27%  ±2.97%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=0 strict=1 len=100 n=20000                               ***     85.79 %       ±4.70%  ±6.31%  ±8.34%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=0 strict=1 len=1000 n=20000                              ***     82.80 %       ±2.61%  ±3.50%  ±4.60%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=1 strict=1 len=100 n=20000                               ***     41.99 %       ±2.29%  ±3.05%  ±3.98%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=1 strict=1 len=1000 n=20000                              ***     38.12 %       ±2.77%  ±3.69%  ±4.80%
assert/deepequal-buffer.js method='partial' arrayBuffer=0 strict=1 len=100 n=20000                                    ***     66.92 %       ±5.53%  ±7.44%  ±9.84%
assert/deepequal-buffer.js method='partial' arrayBuffer=0 strict=1 len=1000 n=20000                                   ***     57.42 %       ±1.69%  ±2.25%  ±2.95%
assert/deepequal-buffer.js method='partial' arrayBuffer=1 strict=1 len=100 n=20000                                    ***     37.02 %       ±1.48%  ±1.97%  ±2.57%
assert/deepequal-buffer.js method='partial' arrayBuffer=1 strict=1 len=1000 n=20000                                   ***     36.01 %       ±1.90%  ±2.52%  ±3.29%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=0 strict=1 len=100 n=20000                             ***    111.30 %       ±3.31%  ±4.42%  ±5.78%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=0 strict=1 len=1000 n=20000                            ***    110.24 %       ±2.73%  ±3.64%  ±4.77%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=1 strict=1 len=100 n=20000                             ***     77.52 %       ±2.90%  ±3.87%  ±5.06%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=1 strict=1 len=1000 n=20000                            ***     76.98 %       ±2.52%  ±3.37%  ±4.42%
assert/deepequal-map.js method='deepEqual_mixed' strict=0 len=500 n=2000                                              ***      7.03 %       ±3.18%  ±4.27%  ±5.66%
assert/deepequal-map.js method='deepEqual_mixed' strict=1 len=500 n=2000                                               **      5.07 %       ±3.22%  ±4.33%  ±5.73%
assert/deepequal-map.js method='deepEqual_objectOnly' strict=0 len=500 n=2000                                         ***      7.21 %       ±1.01%  ±1.34%  ±1.75%
assert/deepequal-map.js method='deepEqual_objectOnly' strict=1 len=500 n=2000                                         ***      6.18 %       ±1.48%  ±1.98%  ±2.61%
assert/deepequal-map.js method='deepEqual_primitiveOnly' strict=0 len=500 n=2000                                               1.88 %       ±3.08%  ±4.13%  ±5.44%
assert/deepequal-map.js method='deepEqual_primitiveOnly' strict=1 len=500 n=2000                                               0.86 %       ±1.60%  ±2.13%  ±2.78%
assert/deepequal-map.js method='notDeepEqual_mixed' strict=0 len=500 n=2000                                           ***      7.05 %       ±3.51%  ±4.68%  ±6.11%
assert/deepequal-map.js method='notDeepEqual_mixed' strict=1 len=500 n=2000                                           ***      6.71 %       ±3.30%  ±4.39%  ±5.72%
assert/deepequal-map.js method='notDeepEqual_objectOnly' strict=0 len=500 n=2000                                      ***      6.18 %       ±1.26%  ±1.68%  ±2.20%
assert/deepequal-map.js method='notDeepEqual_objectOnly' strict=1 len=500 n=2000                                      ***      6.41 %       ±1.43%  ±1.92%  ±2.52%
assert/deepequal-map.js method='notDeepEqual_primitiveOnly' strict=0 len=500 n=2000                                            0.98 %       ±3.05%  ±4.06%  ±5.29%
assert/deepequal-map.js method='notDeepEqual_primitiveOnly' strict=1 len=500 n=2000                                            0.31 %       ±2.38%  ±3.17%  ±4.14%
assert/deepequal-object.js method='deepEqual' size=10000 n=50                                                         ***      3.54 %       ±0.67%  ±0.89%  ±1.15%
assert/deepequal-object.js method='deepStrictEqual' size=10000 n=50                                                     *      1.20 %       ±1.12%  ±1.50%  ±1.98%
assert/deepequal-object.js method='notDeepEqual' size=10000 n=50                                                              -4.17 %       ±6.01%  ±8.00% ±10.44%
assert/deepequal-object.js method='notDeepStrictEqual' size=10000 n=50                                                  *     -7.68 %       ±6.03%  ±8.03% ±10.45%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='array'                    ***     14.20 %       ±3.27%  ±4.36%  ±5.69%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='boolean'                           2.41 %       ±3.58%  ±4.78%  ±6.25%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='circular'                         -0.56 %       ±2.42%  ±3.23%  ±4.22%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='date'                     ***     12.07 %       ±2.55%  ±3.40%  ±4.42%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='empty_object'                     -0.86 %       ±3.92%  ±5.23%  ±6.85%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='invalidDate'              ***     12.16 %       ±4.15%  ±5.55%  ±7.27%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='null_prototype'           ***     -9.58 %       ±2.35%  ±3.12%  ±4.06%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='number'                            0.55 %       ±3.61%  ±4.80%  ±6.25%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='object'                            1.09 %       ±3.35%  ±4.49%  ±5.93%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='regexp'                   ***     -4.55 %       ±2.41%  ±3.21%  ±4.18%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='set_object'               ***     35.98 %       ±3.27%  ±4.35%  ±5.68%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='set_simple'               ***     51.98 %       ±3.03%  ±4.03%  ±5.25%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='string'                            1.24 %       ±3.73%  ±4.97%  ±6.48%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='array'                    ***     10.68 %       ±3.37%  ±4.49%  ±5.86%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='boolean'                           1.68 %       ±2.84%  ±3.78%  ±4.92%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='circular'                         -0.37 %       ±3.60%  ±4.79%  ±6.25%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='date'                     ***      9.28 %       ±3.30%  ±4.40%  ±5.75%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='empty_object'                     -0.62 %       ±2.79%  ±3.71%  ±4.84%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='invalidDate'              ***      8.13 %       ±2.58%  ±3.44%  ±4.48%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='null_prototype'            **     -3.74 %       ±2.41%  ±3.21%  ±4.17%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='number'                           -1.80 %       ±3.47%  ±4.61%  ±6.00%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='object'                            1.56 %       ±2.79%  ±3.73%  ±4.88%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='regexp'                     *     -2.76 %       ±2.39%  ±3.18%  ±4.14%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='set_object'               ***     29.33 %       ±3.41%  ±4.54%  ±5.92%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='set_simple'               ***     39.71 %       ±3.21%  ±4.27%  ±5.56%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='string'                            1.43 %       ±3.71%  ±4.95%  ±6.47%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='array'                 ***      9.66 %       ±3.34%  ±4.45%  ±5.81%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='boolean'                        1.33 %       ±5.41%  ±7.25%  ±9.55%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='circular'                      -0.10 %       ±3.05%  ±4.06%  ±5.29%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='date'                  ***     21.58 %       ±4.38%  ±5.87%  ±7.71%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='empty_object'                  -0.71 %       ±2.44%  ±3.24%  ±4.22%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='invalidDate'           ***     25.14 %       ±2.52%  ±3.35%  ±4.36%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='null_prototype'                 0.50 %       ±2.45%  ±3.27%  ±4.26%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='number'                         1.57 %       ±3.96%  ±5.28%  ±6.89%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='object'                         1.75 %       ±2.94%  ±3.93%  ±5.15%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='regexp'                ***      5.29 %       ±2.16%  ±2.88%  ±3.75%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='set_object'            ***     29.19 %       ±3.24%  ±4.31%  ±5.60%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='set_simple'            ***     38.59 %       ±5.60%  ±7.47%  ±9.77%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='string'                         1.74 %       ±4.75%  ±6.33%  ±8.26%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=0 len=100 n=1000                                 *      9.24 %       ±8.00% ±10.65% ±13.86%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=0 len=2 n=1000                                          0.60 %       ±8.65% ±11.52% ±15.00%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=1 len=100 n=1000                                        8.21 %       ±8.45% ±11.25% ±14.64%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=1 len=2 n=1000                                          8.73 %      ±10.06% ±13.38% ±17.42%
assert/deepequal-set.js method='deepEqual_mixed' order='random' strict=1 len=100 n=1000                                 *      9.16 %       ±8.16% ±10.85% ±14.13%
assert/deepequal-set.js method='deepEqual_mixed' order='random' strict=1 len=2 n=1000                                          8.22 %       ±8.32% ±11.07% ±14.41%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=0 len=100 n=1000                                      6.09 %       ±9.72% ±12.93% ±16.85%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=0 len=2 n=1000                                        5.23 %       ±7.93% ±10.55% ±13.74%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=1 len=100 n=1000                               *      8.09 %       ±7.03%  ±9.36% ±12.19%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=1 len=2 n=1000                                        4.63 %       ±8.95% ±11.91% ±15.50%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=0 len=100 n=1000                           **     11.64 %       ±8.30% ±11.04% ±14.37%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=0 len=2 n=1000                                     5.17 %       ±9.41% ±12.52% ±16.29%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=1 len=100 n=1000                           **     11.82 %       ±8.50% ±11.31% ±14.72%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=1 len=2 n=1000                                     4.01 %       ±8.16% ±10.85% ±14.13%
assert/deepequal-set.js method='deepEqual_objectOnly' order='random' strict=1 len=100 n=1000                                   5.55 %       ±8.73% ±11.62% ±15.12%
assert/deepequal-set.js method='deepEqual_objectOnly' order='random' strict=1 len=2 n=1000                                     3.54 %       ±8.83% ±11.75% ±15.30%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=0 len=100 n=1000                          *     10.36 %       ±8.51% ±11.33% ±14.74%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=0 len=2 n=1000                                  -0.31 %       ±7.70% ±10.26% ±13.36%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=1 len=100 n=1000                          *      7.72 %       ±6.84%  ±9.11% ±11.85%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=1 len=2 n=1000                                   1.91 %       ±8.22% ±10.93% ±14.23%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=0 len=100 n=1000                                0.42 %       ±9.06% ±12.05% ±15.69%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=0 len=2 n=1000                                  0.78 %       ±9.01% ±12.01% ±15.67%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=1 len=100 n=1000                                4.77 %       ±7.97% ±10.60% ±13.81%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=1 len=2 n=1000                                 -1.39 %       ±6.69%  ±8.90% ±11.58%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='random' strict=1 len=100 n=1000                                2.72 %       ±9.09% ±12.09% ±15.74%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='random' strict=1 len=2 n=1000                                  5.64 %      ±10.22% ±13.61% ±17.71%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=0 len=100 n=1000                              7.42 %       ±9.68% ±12.88% ±16.79%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=0 len=2 n=1000                               -0.63 %       ±9.58% ±12.75% ±16.60%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=1 len=100 n=1000                              0.34 %       ±6.94%  ±9.23% ±12.01%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=1 len=2 n=1000                                3.68 %       ±9.59% ±12.76% ±16.62%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=0 len=100 n=1000                             **     14.66 %       ±9.51% ±12.66% ±16.48%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=0 len=2 n=1000                              ***     44.05 %       ±9.70% ±12.94% ±16.91%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=1 len=100 n=1000                                     1.94 %       ±7.78% ±10.35% ±13.47%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=1 len=2 n=1000                                       2.15 %       ±8.01% ±10.68% ±13.92%
assert/deepequal-set.js method='notDeepEqual_mixed' order='random' strict=1 len=100 n=1000                                     2.32 %      ±15.99% ±21.27% ±27.69%
assert/deepequal-set.js method='notDeepEqual_mixed' order='random' strict=1 len=2 n=1000                                       7.07 %      ±12.73% ±16.94% ±22.06%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=0 len=100 n=1000                                   1.15 %       ±8.12% ±10.81% ±14.07%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=0 len=2 n=1000                                     4.08 %       ±9.55% ±12.72% ±16.56%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=1 len=100 n=1000                                   4.35 %       ±6.73%  ±8.96% ±11.67%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=1 len=2 n=1000                                     7.27 %       ±8.82% ±11.73% ±15.28%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=0 len=100 n=1000                        **     13.08 %       ±8.28% ±11.02% ±14.34%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=0 len=2 n=1000                                  6.65 %       ±7.62% ±10.15% ±13.23%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=1 len=100 n=1000                         *      8.83 %       ±8.28% ±11.02% ±14.34%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=1 len=2 n=1000                          **     13.25 %       ±9.45% ±12.57% ±16.36%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=0 len=100 n=1000                      **     11.83 %       ±8.47% ±11.27% ±14.67%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=0 len=2 n=1000                         *      9.37 %       ±8.36% ±11.13% ±14.48%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=1 len=100 n=1000                      **     11.51 %       ±6.94%  ±9.25% ±12.05%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=1 len=2 n=1000                                5.71 %       ±9.02% ±12.00% ±15.62%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=0 len=100 n=1000                             4.38 %       ±8.03% ±10.68% ±13.91%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=0 len=2 n=1000                               1.10 %       ±7.81% ±10.40% ±13.55%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=1 len=100 n=1000                             3.51 %       ±8.70% ±11.58% ±15.09%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=1 len=2 n=1000                               3.98 %       ±8.17% ±10.87% ±14.16%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='random' strict=1 len=100 n=1000                             3.55 %      ±14.40% ±19.17% ±24.97%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='random' strict=1 len=2 n=1000                               7.14 %       ±8.68% ±11.55% ±15.04%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=0 len=100 n=1000                           6.17 %       ±9.88% ±13.16% ±17.13%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=0 len=2 n=1000                    ***     39.18 %       ±9.56% ±12.73% ±16.60%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=1 len=100 n=1000                           5.70 %       ±6.39%  ±8.50% ±11.07%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=1 len=2 n=1000                             5.85 %       ±9.39% ±12.50% ±16.28%
assert/deepequal-simple-array-and-set.js method='deepEqual_Array' strict=1 len=10000 n=1000                                    3.63 %       ±5.07%  ±6.78%  ±8.88%
assert/deepequal-simple-array-and-set.js method='deepEqual_Set' strict=1 len=10000 n=1000                                      1.66 %       ±9.89% ±13.16% ±17.14%
assert/deepequal-simple-array-and-set.js method='deepEqual_sparseArray' strict=1 len=10000 n=1000                             -0.04 %       ±4.61%  ±6.16%  ±8.06%
assert/deepequal-simple-array-and-set.js method='notDeepEqual_Array' strict=1 len=10000 n=1000                                 1.44 %       ±4.62%  ±6.17%  ±8.06%
assert/deepequal-simple-array-and-set.js method='notDeepEqual_Set' strict=1 len=10000 n=1000                                  -0.81 %       ±7.69% ±10.23% ±13.31%
assert/deepequal-simple-array-and-set.js method='notDeepEqual_sparseArray' strict=1 len=10000 n=1000                           0.05 %       ±4.00%  ±5.34%  ±6.98%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Float32Array'                                3.29 %       ±5.58%  ±7.43%  ±9.68%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Int8Array'                          ***     46.69 %       ±5.72%  ±7.63%  ±9.97%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Uint32Array'                        ***     46.40 %       ±5.68%  ±7.56%  ±9.85%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Uint8Array'                         ***     49.20 %       ±7.23%  ±9.62% ±12.51%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Float32Array'                       ***     47.39 %       ±5.91%  ±7.88% ±10.28%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Int8Array'                          ***     52.27 %       ±7.47%  ±9.95% ±12.97%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Uint32Array'                        ***     48.86 %       ±5.93%  ±7.90% ±10.30%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Uint8Array'                         ***     52.23 %       ±7.00%  ±9.31% ±12.13%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Float32Array'                    ***     54.32 %       ±6.91%  ±9.22% ±12.05%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Int8Array'                       ***     70.14 %       ±6.84%  ±9.11% ±11.88%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Uint32Array'                     ***     67.19 %       ±6.18%  ±8.23% ±10.74%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Uint8Array'                      ***     67.63 %       ±7.60% ±10.12% ±13.19%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Float32Array'                    ***     65.58 %       ±8.02% ±10.71% ±14.04%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Int8Array'                       ***     72.38 %       ±5.75%  ±7.65%  ±9.96%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Uint32Array'                     ***     65.32 %       ±7.14%  ±9.55% ±12.51%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Uint8Array'                      ***     70.89 %       ±8.85% ±11.82% ±15.48%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=25000 type='Int8Array'                         ***     35.21 %       ±6.73%  ±8.98% ±11.76%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=25000 type='Uint32Array'                       ***     18.59 %       ±4.77%  ±6.35%  ±8.26%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=25000 type='Uint8Array'                        ***     36.38 %       ±6.76%  ±9.00% ±11.72%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Float32Array'                      ***     18.14 %       ±5.37%  ±7.15%  ±9.30%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Int8Array'                         ***     37.10 %       ±5.76%  ±7.66%  ±9.98%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Uint32Array'                       ***     16.94 %       ±4.94%  ±6.58%  ±8.57%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Uint8Array'                        ***     36.83 %       ±6.34%  ±8.43% ±10.97%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=25000 type='Int8Array'                      ***     57.09 %       ±6.04%  ±8.05% ±10.50%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=25000 type='Uint32Array'                    ***     31.51 %       ±5.16%  ±6.87%  ±8.94%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=25000 type='Uint8Array'                     ***     58.01 %       ±6.59%  ±8.76% ±11.41%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Float32Array'                   ***     33.02 %       ±5.69%  ±7.57%  ±9.86%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Int8Array'                      ***     60.98 %       ±5.49%  ±7.31%  ±9.52%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Uint32Array'                    ***     32.86 %       ±5.36%  ±7.14%  ±9.29%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Uint8Array'                     ***     58.01 %       ±6.64%  ±8.85% ±11.52%
assert/partial-deep-equal.js datasetName='array' extraProps=0 size=500 n=125                                                   0.30 %       ±5.10%  ±6.79%  ±8.83%
assert/partial-deep-equal.js datasetName='array' extraProps=1 size=500 n=125                                                  -4.08 %       ±4.47%  ±5.95%  ±7.75%
assert/partial-deep-equal.js datasetName='arrayBuffers' extraProps=0 size=500 n=125                                   ***     49.68 %       ±6.20%  ±8.25% ±10.74%
assert/partial-deep-equal.js datasetName='arrayBuffers' extraProps=1 size=500 n=125                                   ***     15.76 %       ±5.32%  ±7.11%  ±9.31%
assert/partial-deep-equal.js datasetName='circularRefs' extraProps=0 size=500 n=125                                    **      7.61 %       ±5.69%  ±7.58%  ±9.89%
assert/partial-deep-equal.js datasetName='circularRefs' extraProps=1 size=500 n=125                                            5.09 %       ±5.17%  ±6.88%  ±8.97%
assert/partial-deep-equal.js datasetName='dataViewArrayBuffers' extraProps=0 size=500 n=125                           ***     81.07 %       ±6.25%  ±8.33% ±10.85%
assert/partial-deep-equal.js datasetName='dataViewArrayBuffers' extraProps=1 size=500 n=125                           ***     18.15 %       ±4.91%  ±6.56%  ±8.58%
assert/partial-deep-equal.js datasetName='maps' extraProps=0 size=500 n=125                                           ***     21.90 %       ±6.14%  ±8.17% ±10.64%
assert/partial-deep-equal.js datasetName='maps' extraProps=1 size=500 n=125                                           ***     19.32 %       ±6.11%  ±8.13% ±10.60%
assert/partial-deep-equal.js datasetName='objects' extraProps=0 size=500 n=125                                         **      8.35 %       ±5.11%  ±6.80%  ±8.87%
assert/partial-deep-equal.js datasetName='objects' extraProps=1 size=500 n=125                                                 5.15 %       ±5.25%  ±7.00%  ±9.12%
assert/partial-deep-equal.js datasetName='sets' extraProps=0 size=500 n=125                                           ***     25.19 %      ±10.13% ±13.50% ±17.59%
assert/partial-deep-equal.js datasetName='sets' extraProps=1 size=500 n=125                                           ***     22.04 %       ±5.80%  ±7.72% ±10.04%
assert/partial-deep-equal.js datasetName='setsWithObjects' extraProps=0 size=500 n=125                                ***     20.56 %       ±5.94%  ±7.90% ±10.29%
assert/partial-deep-equal.js datasetName='setsWithObjects' extraProps=1 size=500 n=125                                ***     20.51 %       ±5.67%  ±7.55%  ±9.83%
assert/partial-deep-equal.js datasetName='typedArrays' extraProps=0 size=500 n=125                                    ***     72.64 %       ±6.43%  ±8.56% ±11.15%
assert/partial-deep-equal.js datasetName='typedArrays' extraProps=1 size=500 n=125                                    ***     58.24 %       ±6.98%  ±9.33% ±12.25%

@codecov
Copy link

codecov bot commented Dec 26, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.52%. Comparing base (5e677d6) to head (f93515c).
⚠️ Report is 15 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #61176      +/-   ##
==========================================
- Coverage   88.52%   88.52%   -0.01%     
==========================================
  Files         703      703              
  Lines      208585   208613      +28     
  Branches    40225    40238      +13     
==========================================
+ Hits       184650   184669      +19     
  Misses      15953    15953              
- Partials     7982     7991       +9     
Files with missing lines Coverage Δ
lib/internal/util/comparisons.js 99.71% <100.00%> (+<0.01%) ⬆️

... and 42 files with indirect coverage changes

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

@BridgeAR BridgeAR marked this pull request as draft December 26, 2025 14:43
This is a workaround for errors recreated by error serdes.
@BridgeAR BridgeAR marked this pull request as ready for review December 27, 2025 05:56
@aduh95
Copy link
Contributor

aduh95 commented Dec 27, 2025

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

Results
                                                                                                               confidence improvement accuracy (*)    (**)   (***)
assert/assertion-error.js size=2 n=200                                                                                        -2.44 %       ±8.20% ±10.93% ±14.25%
assert/assertion-error.js size=75 n=200                                                                                       -0.59 %       ±1.33%  ±1.76%  ±2.30%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=0 len=100 n=20000                                  ***     77.48 %      ±10.21% ±13.61% ±17.76%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=0 len=1000 n=20000                                 ***     86.31 %      ±10.89% ±14.49% ±18.86%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=1 len=100 n=20000                                  ***     77.33 %      ±11.37% ±15.15% ±19.77%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=0 strict=1 len=1000 n=20000                                 ***     95.30 %      ±15.24% ±20.31% ±26.50%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=0 len=100 n=20000                                  ***     43.76 %      ±16.77% ±22.35% ±29.16%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=0 len=1000 n=20000                                          5.51 %       ±9.85% ±13.10% ±17.05%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=1 len=100 n=20000                                          10.38 %      ±10.81% ±14.41% ±18.80%
assert/deepequal-buffer.js method='deepEqual' arrayBuffer=1 strict=1 len=1000 n=20000                                  **     17.78 %      ±11.12% ±14.80% ±19.29%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=0 strict=1 len=100 n=20000                               ***     92.45 %      ±13.33% ±17.88% ±23.55%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=0 strict=1 len=1000 n=20000                              ***    120.55 %      ±11.24% ±14.96% ±19.47%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=1 strict=1 len=100 n=20000                               ***     49.60 %      ±15.86% ±21.23% ±27.88%
assert/deepequal-buffer.js method='notDeepEqual' arrayBuffer=1 strict=1 len=1000 n=20000                              ***     40.92 %      ±17.34% ±23.14% ±30.25%
assert/deepequal-buffer.js method='partial' arrayBuffer=0 strict=1 len=100 n=20000                                    ***     96.08 %      ±12.22% ±16.29% ±21.28%
assert/deepequal-buffer.js method='partial' arrayBuffer=0 strict=1 len=1000 n=20000                                   ***     76.90 %      ±18.15% ±24.24% ±31.74%
assert/deepequal-buffer.js method='partial' arrayBuffer=1 strict=1 len=100 n=20000                                    ***     66.13 %      ±15.43% ±20.62% ±27.02%
assert/deepequal-buffer.js method='partial' arrayBuffer=1 strict=1 len=1000 n=20000                                   ***     43.70 %      ±14.89% ±19.94% ±26.20%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=0 strict=1 len=100 n=20000                             ***    106.68 %      ±18.40% ±24.73% ±32.68%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=0 strict=1 len=1000 n=20000                            ***    172.40 %      ±16.83% ±22.46% ±29.37%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=1 strict=1 len=100 n=20000                             ***     91.59 %      ±15.42% ±20.62% ±27.07%
assert/deepequal-buffer.js method='unequal_length' arrayBuffer=1 strict=1 len=1000 n=20000                            ***    127.56 %      ±15.59% ±20.75% ±27.03%
assert/deepequal-map.js method='deepEqual_mixed' strict=0 len=500 n=2000                                              ***      5.41 %       ±1.46%  ±1.94%  ±2.52%
assert/deepequal-map.js method='deepEqual_mixed' strict=1 len=500 n=2000                                              ***      6.32 %       ±1.71%  ±2.27%  ±2.95%
assert/deepequal-map.js method='deepEqual_objectOnly' strict=0 len=500 n=2000                                         ***      7.96 %       ±0.81%  ±1.08%  ±1.41%
assert/deepequal-map.js method='deepEqual_objectOnly' strict=1 len=500 n=2000                                         ***      5.95 %       ±1.06%  ±1.41%  ±1.84%
assert/deepequal-map.js method='deepEqual_primitiveOnly' strict=0 len=500 n=2000                                              -1.35 %       ±5.48%  ±7.29%  ±9.49%
assert/deepequal-map.js method='deepEqual_primitiveOnly' strict=1 len=500 n=2000                                               5.80 %       ±6.77%  ±9.01% ±11.72%
assert/deepequal-map.js method='notDeepEqual_mixed' strict=0 len=500 n=2000                                             *     26.30 %      ±23.10% ±30.74% ±40.03%
assert/deepequal-map.js method='notDeepEqual_mixed' strict=1 len=500 n=2000                                                  -10.52 %      ±19.85% ±26.41% ±34.38%
assert/deepequal-map.js method='notDeepEqual_objectOnly' strict=0 len=500 n=2000                                      ***      8.25 %       ±0.91%  ±1.21%  ±1.58%
assert/deepequal-map.js method='notDeepEqual_objectOnly' strict=1 len=500 n=2000                                      ***      8.92 %       ±1.27%  ±1.69%  ±2.20%
assert/deepequal-map.js method='notDeepEqual_primitiveOnly' strict=0 len=500 n=2000                                           -3.60 %      ±10.72% ±14.26% ±18.57%
assert/deepequal-map.js method='notDeepEqual_primitiveOnly' strict=1 len=500 n=2000                                            2.76 %      ±10.67% ±14.21% ±18.50%
assert/deepequal-object.js method='deepEqual' size=10000 n=50                                                         ***      4.18 %       ±0.54%  ±0.71%  ±0.93%
assert/deepequal-object.js method='deepStrictEqual' size=10000 n=50                                                   ***      3.02 %       ±0.49%  ±0.65%  ±0.85%
assert/deepequal-object.js method='notDeepEqual' size=10000 n=50                                                       **     -9.33 %       ±6.54%  ±8.71% ±11.35%
assert/deepequal-object.js method='notDeepStrictEqual' size=10000 n=50                                                        -1.76 %      ±10.07% ±13.40% ±17.44%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='array'                    ***     12.85 %       ±6.41%  ±8.57% ±11.24%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='boolean'                          -9.72 %      ±17.00% ±22.62% ±29.45%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='circular'                          5.50 %       ±8.83% ±11.74% ±15.29%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='date'                              6.21 %      ±10.05% ±13.37% ±17.41%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='empty_object'              **    -17.08 %      ±11.34% ±15.09% ±19.64%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='invalidDate'                       1.74 %      ±10.10% ±13.44% ±17.50%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='null_prototype'           ***    -14.14 %       ±6.03%  ±8.03% ±10.47%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='number'                           -9.25 %      ±16.19% ±21.54% ±28.04%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='object'                            1.72 %      ±11.35% ±15.10% ±19.65%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='regexp'                           -9.96 %      ±10.56% ±14.05% ±18.28%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='set_object'               ***     37.51 %       ±6.11%  ±8.15% ±10.65%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='set_simple'               ***     55.78 %      ±12.46% ±16.68% ±21.93%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=0 n=100000 primitive='string'                           -5.24 %      ±12.47% ±16.59% ±21.60%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='array'                     **     12.00 %       ±7.16%  ±9.55% ±12.49%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='boolean'                           0.75 %      ±16.29% ±21.67% ±28.21%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='circular'                          0.47 %       ±5.54%  ±7.37%  ±9.59%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='date'                      **     11.61 %       ±7.87% ±10.48% ±13.65%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='empty_object'                     -3.22 %       ±8.85% ±11.79% ±15.35%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='invalidDate'              ***     19.08 %       ±7.13%  ±9.49% ±12.35%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='null_prototype'            **     -6.96 %       ±4.10%  ±5.47%  ±7.14%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='number'                           -3.49 %      ±21.23% ±28.25% ±36.76%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='object'                           -1.52 %       ±7.01%  ±9.33% ±12.15%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='regexp'                           -5.24 %       ±5.42%  ±7.21%  ±9.39%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='set_object'               ***     36.25 %       ±3.58%  ±4.77%  ±6.24%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='set_simple'               ***     38.69 %       ±9.08% ±12.13% ±15.90%
assert/deepequal-prims-and-objs-big-loop.js method='deepEqual' strict=1 n=100000 primitive='string'                          -11.23 %      ±13.48% ±17.94% ±23.36%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='array'                 ***     11.19 %       ±5.49%  ±7.32%  ±9.55%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='boolean'                       -7.80 %      ±20.34% ±27.07% ±35.25%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='circular'                      -2.24 %       ±4.69%  ±6.24%  ±8.12%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='date'                   **     15.33 %       ±9.43% ±12.56% ±16.37%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='empty_object'                  -2.09 %      ±16.79% ±22.35% ±29.08%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='invalidDate'                    7.71 %       ±9.17% ±12.25% ±16.05%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='null_prototype'                 5.52 %       ±9.59% ±12.77% ±16.63%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='number'                       -15.73 %      ±19.58% ±26.09% ±34.05%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='object'                 **     -8.70 %       ±6.17%  ±8.20% ±10.68%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='regexp'                         0.69 %       ±8.82% ±11.74% ±15.29%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='set_object'            ***     37.42 %       ±4.16%  ±5.54%  ±7.22%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='set_simple'            ***     40.15 %       ±9.00% ±12.03% ±15.77%
assert/deepequal-prims-and-objs-big-loop.js method='notDeepEqual' strict=1 n=100000 primitive='string'                         4.82 %      ±22.19% ±29.52% ±38.42%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=0 len=100 n=1000                               ***     17.11 %       ±7.36%  ±9.81% ±12.81%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=0 len=2 n=1000                                          2.49 %      ±20.30% ±27.02% ±35.17%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=1 len=100 n=1000                                 *      8.72 %       ±8.01% ±10.66% ±13.89%
assert/deepequal-set.js method='deepEqual_mixed' order='insert' strict=1 len=2 n=1000                                         -7.51 %      ±11.70% ±15.66% ±20.59%
assert/deepequal-set.js method='deepEqual_mixed' order='random' strict=1 len=100 n=1000                               ***      9.36 %       ±5.30%  ±7.05%  ±9.18%
assert/deepequal-set.js method='deepEqual_mixed' order='random' strict=1 len=2 n=1000                                          0.37 %      ±13.32% ±17.75% ±23.14%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=0 len=100 n=1000                               *      7.75 %       ±7.24%  ±9.64% ±12.56%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=0 len=2 n=1000                                      -12.65 %      ±20.66% ±27.50% ±35.83%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=1 len=100 n=1000                               *      8.72 %       ±6.57%  ±8.76% ±11.42%
assert/deepequal-set.js method='deepEqual_mixed' order='reversed' strict=1 len=2 n=1000                                      -11.40 %      ±13.41% ±17.91% ±23.46%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=0 len=100 n=1000                                   0.52 %       ±5.20%  ±6.96%  ±9.13%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=0 len=2 n=1000                                     1.35 %       ±9.53% ±12.69% ±16.53%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=1 len=100 n=1000                           **      8.30 %       ±5.06%  ±6.74%  ±8.78%
assert/deepequal-set.js method='deepEqual_objectOnly' order='insert' strict=1 len=2 n=1000                                    -4.84 %      ±11.26% ±15.03% ±19.65%
assert/deepequal-set.js method='deepEqual_objectOnly' order='random' strict=1 len=100 n=1000                           **      6.17 %       ±4.19%  ±5.58%  ±7.27%
assert/deepequal-set.js method='deepEqual_objectOnly' order='random' strict=1 len=2 n=1000                              *      5.09 %       ±4.56%  ±6.10%  ±8.00%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=0 len=100 n=1000                         **      8.64 %       ±5.73%  ±7.63%  ±9.94%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=0 len=2 n=1000                                   6.86 %       ±7.27%  ±9.68% ±12.62%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=1 len=100 n=1000                         **      8.82 %       ±5.81%  ±7.74% ±10.09%
assert/deepequal-set.js method='deepEqual_objectOnly' order='reversed' strict=1 len=2 n=1000                                   6.03 %      ±11.33% ±15.08% ±19.64%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=0 len=100 n=1000                                4.47 %      ±16.50% ±21.95% ±28.57%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=0 len=2 n=1000                                 -7.65 %      ±19.13% ±25.48% ±33.22%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=1 len=100 n=1000                               18.98 %      ±21.27% ±28.31% ±36.85%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='insert' strict=1 len=2 n=1000                                -10.80 %      ±24.24% ±32.26% ±42.00%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='random' strict=1 len=100 n=1000                                5.94 %      ±19.89% ±26.46% ±34.44%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='random' strict=1 len=2 n=1000                           *     41.24 %      ±35.33% ±47.04% ±61.29%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=0 len=100 n=1000                              8.01 %      ±20.86% ±27.76% ±36.13%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=0 len=2 n=1000                               -4.21 %      ±20.31% ±27.05% ±35.25%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=1 len=100 n=1000                             -6.17 %      ±19.33% ±25.72% ±33.47%
assert/deepequal-set.js method='deepEqual_primitiveOnly' order='reversed' strict=1 len=2 n=1000                               21.68 %      ±32.86% ±43.72% ±56.92%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=0 len=100 n=1000                            ***     68.30 %      ±13.48% ±18.17% ±24.12%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=0 len=2 n=1000                              ***     53.14 %      ±10.12% ±13.63% ±18.09%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=1 len=100 n=1000                              *     26.35 %      ±24.22% ±32.22% ±41.94%
assert/deepequal-set.js method='notDeepEqual_mixed' order='insert' strict=1 len=2 n=1000                              ***     51.49 %      ±27.36% ±36.41% ±47.40%
assert/deepequal-set.js method='notDeepEqual_mixed' order='random' strict=1 len=100 n=1000                                    -2.62 %      ±25.90% ±34.48% ±44.92%
assert/deepequal-set.js method='notDeepEqual_mixed' order='random' strict=1 len=2 n=1000                                       6.50 %      ±22.60% ±30.11% ±39.28%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=0 len=100 n=1000                            *    -17.10 %      ±16.33% ±21.74% ±28.33%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=0 len=2 n=1000                                   -11.76 %      ±15.08% ±20.12% ±26.31%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=1 len=100 n=1000                                 -16.01 %      ±16.64% ±22.19% ±28.99%
assert/deepequal-set.js method='notDeepEqual_mixed' order='reversed' strict=1 len=2 n=1000                                     0.28 %       ±9.73% ±13.02% ±17.07%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=0 len=100 n=1000                       ***     12.87 %       ±4.38%  ±5.83%  ±7.59%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=0 len=2 n=1000                                  9.80 %      ±10.27% ±13.67% ±17.80%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=1 len=100 n=1000                       ***     13.06 %       ±5.41%  ±7.22%  ±9.45%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='insert' strict=1 len=2 n=1000                                  9.93 %      ±17.31% ±23.03% ±29.97%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=0 len=100 n=1000                     ***      9.79 %       ±4.58%  ±6.10%  ±7.96%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=0 len=2 n=1000                                6.75 %      ±19.74% ±26.28% ±34.22%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=1 len=100 n=1000                     ***     14.22 %       ±5.34%  ±7.11%  ±9.26%
assert/deepequal-set.js method='notDeepEqual_objectOnly' order='reversed' strict=1 len=2 n=1000                        **      7.44 %       ±4.99%  ±6.72%  ±8.90%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=0 len=100 n=1000                             0.34 %      ±20.08% ±26.72% ±34.78%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=0 len=2 n=1000                       **     30.30 %      ±19.37% ±25.81% ±33.67%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=1 len=100 n=1000                            -6.39 %      ±18.46% ±24.56% ±31.97%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='insert' strict=1 len=2 n=1000                               4.96 %      ±24.89% ±33.11% ±43.10%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='random' strict=1 len=100 n=1000                            -4.29 %      ±22.46% ±29.88% ±38.89%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='random' strict=1 len=2 n=1000                        *     26.84 %      ±25.63% ±34.11% ±44.39%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=0 len=100 n=1000                           0.69 %      ±19.32% ±25.70% ±33.46%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=0 len=2 n=1000                    ***     63.35 %      ±12.48% ±16.81% ±22.30%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=1 len=100 n=1000                           7.82 %      ±19.94% ±26.53% ±34.53%
assert/deepequal-set.js method='notDeepEqual_primitiveOnly' order='reversed' strict=1 len=2 n=1000                    ***     81.35 %      ±28.10% ±37.41% ±48.73%
assert/deepequal-simple-array-and-set.js method='deepEqual_Array' strict=1 len=10000 n=1000                                   -2.85 %       ±3.24%  ±4.32%  ±5.62%
assert/deepequal-simple-array-and-set.js method='deepEqual_Set' strict=1 len=10000 n=1000                                     -0.75 %       ±2.26%  ±3.01%  ±3.92%
assert/deepequal-simple-array-and-set.js method='deepEqual_sparseArray' strict=1 len=10000 n=1000                             -0.46 %       ±0.72%  ±0.96%  ±1.25%
assert/deepequal-simple-array-and-set.js method='notDeepEqual_Array' strict=1 len=10000 n=1000                         **      5.71 %       ±4.19%  ±5.57%  ±7.26%
assert/deepequal-simple-array-and-set.js method='notDeepEqual_Set' strict=1 len=10000 n=1000                                  -0.28 %       ±1.95%  ±2.59%  ±3.38%
assert/deepequal-simple-array-and-set.js method='notDeepEqual_sparseArray' strict=1 len=10000 n=1000                           0.35 %       ±0.79%  ±1.06%  ±1.38%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Float32Array'                       ***     12.58 %       ±2.31%  ±3.10%  ±4.07%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Int8Array'                          ***     68.63 %       ±7.27%  ±9.69% ±12.62%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Uint32Array'                        ***     67.60 %      ±12.69% ±16.91% ±22.07%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=0 n=25000 type='Uint8Array'                         ***     67.90 %      ±10.25% ±13.69% ±17.91%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Float32Array'                       ***     56.94 %      ±12.49% ±16.72% ±21.96%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Int8Array'                          ***     67.14 %      ±11.42% ±15.27% ±20.03%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Uint32Array'                        ***     55.73 %      ±10.52% ±14.10% ±18.56%
assert/deepequal-typedarrays.js len=100 method='deepEqual' strict=1 n=25000 type='Uint8Array'                         ***     52.36 %      ±12.38% ±16.59% ±21.82%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Float32Array'                    ***     51.64 %      ±14.25% ±19.09% ±25.13%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Int8Array'                       ***     66.44 %      ±13.73% ±18.45% ±24.38%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Uint32Array'                     ***     73.28 %      ±13.14% ±17.64% ±23.26%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=0 n=25000 type='Uint8Array'                      ***     79.53 %      ±12.48% ±16.69% ±21.89%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Float32Array'                    ***     76.32 %      ±13.09% ±17.56% ±23.15%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Int8Array'                       ***     79.06 %      ±13.21% ±17.72% ±23.34%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Uint32Array'                     ***     86.02 %      ±12.16% ±16.27% ±21.38%
assert/deepequal-typedarrays.js len=100 method='notDeepEqual' strict=1 n=25000 type='Uint8Array'                      ***     78.65 %      ±14.12% ±18.97% ±25.06%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=25000 type='Int8Array'                         ***     54.48 %       ±7.22%  ±9.63% ±12.57%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=25000 type='Uint32Array'                       ***     30.69 %       ±6.23%  ±8.35% ±10.99%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=0 n=25000 type='Uint8Array'                        ***     54.96 %       ±7.90% ±10.56% ±13.84%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Float32Array'                      ***     26.38 %       ±8.06% ±10.81% ±14.26%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Int8Array'                         ***     44.10 %      ±10.36% ±13.87% ±18.23%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Uint32Array'                       ***     35.10 %       ±5.50%  ±7.37%  ±9.68%
assert/deepequal-typedarrays.js len=5000 method='deepEqual' strict=1 n=25000 type='Uint8Array'                        ***     47.78 %       ±7.45%  ±9.98% ±13.12%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=25000 type='Int8Array'                      ***     79.21 %      ±11.25% ±15.08% ±19.86%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=25000 type='Uint32Array'                    ***     55.03 %       ±8.21% ±10.97% ±14.39%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=0 n=25000 type='Uint8Array'                     ***     85.25 %      ±12.10% ±16.18% ±21.22%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Float32Array'                   ***     59.96 %      ±10.24% ±13.73% ±18.07%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Int8Array'                      ***     80.55 %       ±8.93% ±11.98% ±15.77%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Uint32Array'                    ***     54.74 %       ±8.79% ±11.80% ±15.57%
assert/deepequal-typedarrays.js len=5000 method='notDeepEqual' strict=1 n=25000 type='Uint8Array'                     ***     77.87 %      ±13.42% ±17.97% ±23.62%
assert/partial-deep-equal.js datasetName='array' extraProps=0 size=500 n=125                                                  -1.39 %       ±1.98%  ±2.64%  ±3.45%
assert/partial-deep-equal.js datasetName='array' extraProps=1 size=500 n=125                                                   0.54 %       ±1.28%  ±1.70%  ±2.22%
assert/partial-deep-equal.js datasetName='arrayBuffers' extraProps=0 size=500 n=125                                   ***     68.26 %       ±6.13%  ±8.21% ±10.79%
assert/partial-deep-equal.js datasetName='arrayBuffers' extraProps=1 size=500 n=125                                   ***     25.49 %       ±1.83%  ±2.44%  ±3.18%
assert/partial-deep-equal.js datasetName='circularRefs' extraProps=0 size=500 n=125                                   ***      3.33 %       ±0.66%  ±0.88%  ±1.15%
assert/partial-deep-equal.js datasetName='circularRefs' extraProps=1 size=500 n=125                                   ***      3.27 %       ±0.81%  ±1.07%  ±1.40%
assert/partial-deep-equal.js datasetName='dataViewArrayBuffers' extraProps=0 size=500 n=125                           ***     84.18 %       ±6.06%  ±8.14% ±10.74%
assert/partial-deep-equal.js datasetName='dataViewArrayBuffers' extraProps=1 size=500 n=125                           ***     28.63 %       ±1.53%  ±2.03%  ±2.65%
assert/partial-deep-equal.js datasetName='maps' extraProps=0 size=500 n=125                                           ***     22.62 %       ±0.81%  ±1.07%  ±1.39%
assert/partial-deep-equal.js datasetName='maps' extraProps=1 size=500 n=125                                           ***     20.16 %       ±0.79%  ±1.06%  ±1.38%
assert/partial-deep-equal.js datasetName='objects' extraProps=0 size=500 n=125                                        ***      2.44 %       ±1.06%  ±1.41%  ±1.84%
assert/partial-deep-equal.js datasetName='objects' extraProps=1 size=500 n=125                                        ***      2.51 %       ±1.14%  ±1.52%  ±1.99%
assert/partial-deep-equal.js datasetName='sets' extraProps=0 size=500 n=125                                           ***     23.31 %       ±0.78%  ±1.05%  ±1.38%
assert/partial-deep-equal.js datasetName='sets' extraProps=1 size=500 n=125                                           ***     20.58 %       ±1.02%  ±1.37%  ±1.79%
assert/partial-deep-equal.js datasetName='setsWithObjects' extraProps=0 size=500 n=125                                ***     17.65 %       ±2.30%  ±3.07%  ±4.01%
assert/partial-deep-equal.js datasetName='setsWithObjects' extraProps=1 size=500 n=125                                ***     14.20 %       ±1.94%  ±2.59%  ±3.38%
assert/partial-deep-equal.js datasetName='typedArrays' extraProps=0 size=500 n=125                                    ***     73.47 %       ±1.35%  ±1.81%  ±2.37%
assert/partial-deep-equal.js datasetName='typedArrays' extraProps=1 size=500 n=125                                    ***     59.92 %       ±1.86%  ±2.50%  ±3.30%

@BridgeAR BridgeAR 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 Dec 29, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Dec 29, 2025
@nodejs-github-bot
Copy link
Collaborator

@BridgeAR BridgeAR added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. labels Dec 29, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Dec 29, 2025
@nodejs-github-bot nodejs-github-bot merged commit 5c8ce91 into nodejs:main Dec 29, 2025
74 of 76 checks passed
@nodejs-github-bot
Copy link
Collaborator

Landed in 5c8ce91

aduh95 pushed a commit that referenced this pull request Jan 9, 2026
This makes sure that the toStringTag symbol is used, if available
instead of calculating the toString() value each time, if not
needed (the type checks make a brand check, so there is no need to
check the toStringTag, if non is defined on the object).

PR-URL: #61176
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
aduh95 pushed a commit that referenced this pull request Jan 12, 2026
This makes sure that the toStringTag symbol is used, if available
instead of calculating the toString() value each time, if not
needed (the type checks make a brand check, so there is no need to
check the toStringTag, if non is defined on the object).

PR-URL: #61176
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
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. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. needs-benchmark-ci PR that need a benchmark CI run. needs-ci PRs that need a full CI run. util Issues and PRs related to the built-in util module.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants