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), orvcbuild test
(Windows) passes -
commit message follows commit guidelines