buffer: use v8 fast API calls for Buffer.byteLength with sequential one-byte strings
Depends on https://github.com/nodejs/node/pull/46619
From a local run: I am a bit surprised by the last few numbers, theoretically there should be no difference for them. Curious about what the benchmark CI would show.
confidence improvement accuracy (*) (**) (***)
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='base64' type='four_bytes' 1.39 % ±1.78% ±2.66% ±4.20%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='base64' type='one_byte' 0.40 % ±0.62% ±0.95% ±1.56%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='base64' type='three_bytes' 0.84 % ±3.13% ±5.01% ±8.85%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='base64' type='two_bytes' -1.23 % ±1.66% ±2.40% ±3.56%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='utf8' type='four_bytes' * 1.43 % ±1.42% ±2.18% ±3.58%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='utf8' type='one_byte' *** 32.48 % ±1.42% ±2.05% ±3.04%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='utf8' type='three_bytes' -0.46 % ±2.74% ±4.13% ±6.60%
buffers/buffer-bytelength-string.js n=4000000 repeat=1 encoding='utf8' type='two_bytes' -0.20 % ±2.23% ±3.21% ±4.74%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='base64' type='four_bytes' -0.06 % ±1.80% ±2.64% ±4.01%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='base64' type='one_byte' 0.47 % ±1.09% ±1.63% ±2.59%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='base64' type='three_bytes' 0.41 % ±1.33% ±2.01% ±3.19%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='base64' type='two_bytes' 1.26 % ±3.57% ±5.13% ±7.56%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='utf8' type='four_bytes' *** 3.23 % ±0.78% ±1.17% ±1.84%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='utf8' type='one_byte' 0.57 % ±5.18% ±7.99% ±13.25%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='utf8' type='three_bytes' *** 21.65 % ±0.91% ±1.31% ±1.93%
buffers/buffer-bytelength-string.js n=4000000 repeat=16 encoding='utf8' type='two_bytes' *** 46.84 % ±2.73% ±4.37% ±7.68%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='base64' type='four_bytes' -1.38 % ±2.36% ±3.67% ±6.16%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='base64' type='one_byte' -0.17 % ±2.79% ±4.40% ±7.58%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='base64' type='three_bytes' -0.31 % ±1.17% ±1.70% ±2.56%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='base64' type='two_bytes' 0.04 % ±1.84% ±2.64% ±3.88%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='utf8' type='four_bytes' 0.22 % ±1.54% ±2.24% ±3.38%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='utf8' type='one_byte' 0.64 % ±1.49% ±2.14% ±3.15%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='utf8' type='three_bytes' 2.56 % ±2.77% ±3.98% ±5.85%
buffers/buffer-bytelength-string.js n=4000000 repeat=2 encoding='utf8' type='two_bytes' * 8.26 % ±7.40% ±11.39% ±18.79%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='base64' type='four_bytes' -0.12 % ±0.67% ±0.98% ±1.47%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='base64' type='one_byte' 0.40 % ±1.44% ±2.08% ±3.05%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='base64' type='three_bytes' 0.17 % ±2.13% ±3.10% ±4.66%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='base64' type='two_bytes' 0.25 % ±1.49% ±2.29% ±3.76%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='utf8' type='four_bytes' *** 4.59 % ±0.85% ±1.27% ±2.01%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='utf8' type='one_byte' 0.10 % ±1.32% ±1.98% ±3.15%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='utf8' type='three_bytes' *** 32.02 % ±0.44% ±0.67% ±1.10%
buffers/buffer-bytelength-string.js n=4000000 repeat=256 encoding='utf8' type='two_bytes' *** 74.78 % ±0.73% ±1.14% ±1.91%