Skip to content

buffer: improve fill(number) performance

Uses the native typedArray.fill() when filling with a number instead of calling into the binding fill function.

Benchmark results:

                                                                            confidence improvement accuracy (*)   (**)  (***)
 buffers/buffer-fill.js n=20000 size=65536 type='fill("")'                        ***      4.72 %       ±0.90% ±1.20% ±1.57%
 buffers/buffer-fill.js n=20000 size=65536 type='fill("t", "utf8")'               ***      3.76 %       ±1.00% ±1.34% ±1.74%
 buffers/buffer-fill.js n=20000 size=65536 type='fill("t", 0, "utf8")'            ***      4.30 %       ±0.74% ±0.99% ±1.29%
 buffers/buffer-fill.js n=20000 size=65536 type='fill("t", 0)'                    ***      5.56 %       ±0.90% ±1.20% ±1.56%
 buffers/buffer-fill.js n=20000 size=65536 type='fill("t")'                       ***      4.51 %       ±1.01% ±1.35% ±1.77%
 buffers/buffer-fill.js n=20000 size=65536 type='fill("test")'                             0.18 %       ±0.50% ±0.67% ±0.87%
 buffers/buffer-fill.js n=20000 size=65536 type='fill(0)'                         ***      4.10 %       ±0.84% ±1.12% ±1.46%
 buffers/buffer-fill.js n=20000 size=65536 type='fill(100)'                       ***      4.75 %       ±0.97% ±1.30% ±1.69%
 buffers/buffer-fill.js n=20000 size=65536 type='fill(400)'                       ***      5.17 %       ±1.12% ±1.50% ±1.95%
 buffers/buffer-fill.js n=20000 size=65536 type='fill(Buffer.alloc(1), 0)'                -0.50 %       ±0.66% ±0.88% ±1.15%
 buffers/buffer-fill.js n=20000 size=8192 type='fill("")'                         ***     17.23 %       ±1.65% ±2.20% ±2.86%
 buffers/buffer-fill.js n=20000 size=8192 type='fill("t", "utf8")'                ***     12.32 %       ±1.62% ±2.18% ±2.87%
 buffers/buffer-fill.js n=20000 size=8192 type='fill("t", 0, "utf8")'             ***     13.12 %       ±2.05% ±2.73% ±3.56%
 buffers/buffer-fill.js n=20000 size=8192 type='fill("t", 0)'                     ***     18.16 %       ±1.00% ±1.33% ±1.74%
 buffers/buffer-fill.js n=20000 size=8192 type='fill("t")'                        ***     12.18 %       ±1.64% ±2.18% ±2.86%
 buffers/buffer-fill.js n=20000 size=8192 type='fill("test")'                             -0.34 %       ±1.20% ±1.59% ±2.08%
 buffers/buffer-fill.js n=20000 size=8192 type='fill(0)'                          ***     26.16 %       ±2.99% ±3.99% ±5.21%
 buffers/buffer-fill.js n=20000 size=8192 type='fill(100)'                        ***     28.79 %       ±1.14% ±1.52% ±1.98%
 buffers/buffer-fill.js n=20000 size=8192 type='fill(400)'                        ***     28.91 %       ±1.20% ±1.60% ±2.08%
 buffers/buffer-fill.js n=20000 size=8192 type='fill(Buffer.alloc(1), 0)'                 -0.40 %       ±1.31% ±1.75% ±2.28%
Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • commit message follows commit guidelines

Merge request reports

Loading