buffer: remove noAssert and improve performance
This PR contains the following main changes:
- Remove the
noAssert
argument from all buffer functions. - Port write float / double functions to JS.
- Improve write float / double performance significantly.
- Improve read float / double performance significantly.
- Remove implicit offset coercion to uin32.
- Remove implicit byteLength coercion to uint32.
- The code is mainly simpler to understand / read.
- Faster code in all regular cases.
- Renamed tests properly.
Update: There is no performance penalty in the regular case anymore. Instead there is a constant performance gain! Only while using noAssert = true
some cases exist that got a minor performance penalty. This mainly applies to all Buffer#(write|read)U?Int\d\d?(B|L)E
functions.
Now it will not be possible to insert any non integer numbers as offset or byteLength. Any other type than number of floats will throw.
Benchmarks:
Write performance (noAssert = false)
buffers/buffer-write.js millions=1 type="DoubleBE" buffer="fast" 547.50 % *** 1.473005e-44 buffers/buffer-write.js millions=1 type="DoubleBE" buffer="slow" 524.33 % *** 4.157901e-29 buffers/buffer-write.js millions=1 type="DoubleLE" buffer="fast" 501.02 % *** 9.582363e-78 buffers/buffer-write.js millions=1 type="DoubleLE" buffer="slow" 485.32 % *** 2.141028e-41 buffers/buffer-write.js millions=1 type="FloatBE" buffer="fast" 690.22 % *** 9.522191e-56 buffers/buffer-write.js millions=1 type="FloatBE" buffer="slow" 652.43 % *** 3.965170e-24 buffers/buffer-write.js millions=1 type="FloatLE" buffer="fast" 609.68 % *** 1.698944e-33 buffers/buffer-write.js millions=1 type="FloatLE" buffer="slow" 624.15 % *** 6.233158e-61 buffers/buffer-write.js millions=1 type="Int16BE" buffer="fast" 14.59 % *** 3.647589e-10 buffers/buffer-write.js millions=1 type="Int16BE" buffer="slow" 12.88 % *** 5.299119e-11 buffers/buffer-write.js millions=1 type="Int16LE" buffer="fast" 13.30 % *** 3.997040e-08 buffers/buffer-write.js millions=1 type="Int16LE" buffer="slow" 15.29 % *** 8.548797e-08 buffers/buffer-write.js millions=1 type="Int32BE" buffer="fast" 16.65 % *** 2.782185e-14 buffers/buffer-write.js millions=1 type="Int32BE" buffer="slow" 18.25 % *** 1.764580e-06 buffers/buffer-write.js millions=1 type="Int32LE" buffer="fast" 12.16 % *** 1.757401e-15 buffers/buffer-write.js millions=1 type="Int32LE" buffer="slow" 14.56 % *** 2.213862e-12 buffers/buffer-write.js millions=1 type="Int8" buffer="fast" 17.96 % *** 4.973449e-08 buffers/buffer-write.js millions=1 type="Int8" buffer="slow" 12.73 % *** 1.166677e-06 buffers/buffer-write.js millions=1 type="IntBE" buffer="fast" 89.11 % *** 1.256975e-52 buffers/buffer-write.js millions=1 type="IntBE" buffer="slow" 96.61 % *** 2.188901e-28 buffers/buffer-write.js millions=1 type="IntLE" buffer="fast" 194.31 % *** 1.748937e-32 buffers/buffer-write.js millions=1 type="IntLE" buffer="slow" 193.16 % *** 3.504647e-32 buffers/buffer-write.js millions=1 type="UInt16BE" buffer="fast" 20.39 % *** 5.301260e-15 buffers/buffer-write.js millions=1 type="UInt16BE" buffer="slow" 18.02 % *** 7.211474e-15 buffers/buffer-write.js millions=1 type="UInt16LE" buffer="fast" 17.30 % *** 3.353633e-13 buffers/buffer-write.js millions=1 type="UInt16LE" buffer="slow" 20.73 % *** 1.522262e-10 buffers/buffer-write.js millions=1 type="UInt32BE" buffer="fast" 14.67 % *** 2.330133e-15 buffers/buffer-write.js millions=1 type="UInt32BE" buffer="slow" 12.86 % *** 1.308623e-14 buffers/buffer-write.js millions=1 type="UInt32LE" buffer="fast" 17.40 % *** 1.317629e-07 buffers/buffer-write.js millions=1 type="UInt32LE" buffer="slow" 16.39 % *** 9.271141e-12 buffers/buffer-write.js millions=1 type="UInt8" buffer="fast" 21.21 % *** 1.878171e-28 buffers/buffer-write.js millions=1 type="UInt8" buffer="slow" 21.76 % *** 1.779790e-29 buffers/buffer-write.js millions=1 type="UIntBE" buffer="fast" 73.04 % *** 1.082285e-38 buffers/buffer-write.js millions=1 type="UIntBE" buffer="slow" 70.07 % *** 1.126729e-18 buffers/buffer-write.js millions=1 type="UIntLE" buffer="fast" 43.87 % *** 8.037962e-21 buffers/buffer-write.js millions=1 type="UIntLE" buffer="slow" 48.81 % *** 3.516764e-51
Write performance (noAssert = true)
buffers/buffer-write.js millions=1 type="DoubleBE" buffer="fast" 538.62 % *** 6.925496e-48 buffers/buffer-write.js millions=1 type="DoubleBE" buffer="slow" 516.04 % *** 3.666539e-23 buffers/buffer-write.js millions=1 type="DoubleLE" buffer="fast" 496.81 % *** 2.833039e-32 buffers/buffer-write.js millions=1 type="DoubleLE" buffer="slow" 480.74 % *** 2.489389e-31 buffers/buffer-write.js millions=1 type="FloatBE" buffer="fast" 664.20 % *** 4.724954e-35 buffers/buffer-write.js millions=1 type="FloatBE" buffer="slow" 651.12 % *** 1.613268e-25 buffers/buffer-write.js millions=1 type="FloatLE" buffer="fast" 621.76 % *** 2.581319e-52 buffers/buffer-write.js millions=1 type="FloatLE" buffer="slow" 604.34 % *** 1.104839e-39 buffers/buffer-write.js millions=1 type="Int16BE" buffer="fast" -17.65 % *** 1.201012e-10 buffers/buffer-write.js millions=1 type="Int16BE" buffer="slow" -23.37 % *** 3.580463e-20 buffers/buffer-write.js millions=1 type="Int16LE" buffer="fast" -20.16 % *** 1.304260e-19 buffers/buffer-write.js millions=1 type="Int16LE" buffer="slow" -23.28 % *** 2.205066e-16 buffers/buffer-write.js millions=1 type="Int32BE" buffer="fast" -24.65 % *** 5.581517e-20 buffers/buffer-write.js millions=1 type="Int32BE" buffer="slow" -22.81 % *** 2.986911e-09 buffers/buffer-write.js millions=1 type="Int32LE" buffer="fast" -24.62 % *** 1.859184e-19 buffers/buffer-write.js millions=1 type="Int32LE" buffer="slow" -23.01 % *** 2.205992e-16 buffers/buffer-write.js millions=1 type="Int8" buffer="fast" -20.87 % *** 3.170830e-17 buffers/buffer-write.js millions=1 type="Int8" buffer="slow" -21.84 % *** 7.265008e-21 buffers/buffer-write.js millions=1 type="IntBE" buffer="fast" 65.97 % *** 4.573662e-32 buffers/buffer-write.js millions=1 type="IntBE" buffer="slow" 64.39 % *** 4.635141e-26 buffers/buffer-write.js millions=1 type="IntLE" buffer="fast" 149.00 % *** 8.644140e-53 buffers/buffer-write.js millions=1 type="IntLE" buffer="slow" 148.19 % *** 2.590994e-43 buffers/buffer-write.js millions=1 type="UInt16BE" buffer="fast" -17.45 % *** 1.546388e-26 buffers/buffer-write.js millions=1 type="UInt16BE" buffer="slow" -18.48 % *** 1.214273e-15 buffers/buffer-write.js millions=1 type="UInt16LE" buffer="fast" -17.30 % *** 2.101281e-17 buffers/buffer-write.js millions=1 type="UInt16LE" buffer="slow" -19.00 % *** 3.511856e-10 buffers/buffer-write.js millions=1 type="UInt32BE" buffer="fast" -20.46 % *** 7.723638e-16 buffers/buffer-write.js millions=1 type="UInt32BE" buffer="slow" -20.36 % *** 6.687377e-17 buffers/buffer-write.js millions=1 type="UInt32LE" buffer="fast" -19.86 % *** 4.411048e-35 buffers/buffer-write.js millions=1 type="UInt32LE" buffer="slow" -19.54 % *** 9.967127e-13 buffers/buffer-write.js millions=1 type="UInt8" buffer="fast" -19.19 % *** 2.120574e-13 buffers/buffer-write.js millions=1 type="UInt8" buffer="slow" -21.28 % *** 3.871378e-18 buffers/buffer-write.js millions=1 type="UIntBE" buffer="fast" 42.85 % *** 2.754020e-16 buffers/buffer-write.js millions=1 type="UIntBE" buffer="slow" 34.53 % *** 2.243871e-18 buffers/buffer-write.js millions=1 type="UIntLE" buffer="fast" -20.97 % *** 5.116851e-12 buffers/buffer-write.js millions=1 type="UIntLE" buffer="slow" -24.67 % *** 1.945236e-17
Read performance (noAssert = false)
buffers/buffer-read.js millions=1 type="DoubleBE" buffer="fast" 113.90 % *** 1.911543e-52 buffers/buffer-read.js millions=1 type="DoubleBE" buffer="slow" 114.34 % *** 9.092115e-60 buffers/buffer-read.js millions=1 type="DoubleLE" buffer="fast" 107.36 % *** 3.662694e-29 buffers/buffer-read.js millions=1 type="DoubleLE" buffer="slow" 105.93 % *** 3.606574e-31 buffers/buffer-read.js millions=1 type="FloatBE" buffer="fast" 91.33 % *** 5.540396e-22 buffers/buffer-read.js millions=1 type="FloatBE" buffer="slow" 90.81 % *** 6.675094e-20 buffers/buffer-read.js millions=1 type="FloatLE" buffer="fast" 90.40 % *** 4.496193e-23 buffers/buffer-read.js millions=1 type="FloatLE" buffer="slow" 97.02 % *** 1.667359e-34 buffers/buffer-read.js millions=1 type="Int16BE" buffer="fast" 7.29 % *** 2.039006e-04 buffers/buffer-read.js millions=1 type="Int16BE" buffer="slow" 9.44 % *** 2.194688e-09 buffers/buffer-read.js millions=1 type="Int16LE" buffer="fast" 9.26 % *** 5.942048e-14 buffers/buffer-read.js millions=1 type="Int16LE" buffer="slow" 9.13 % *** 6.586184e-20 buffers/buffer-read.js millions=1 type="Int32BE" buffer="fast" 41.57 % *** 1.464605e-19 buffers/buffer-read.js millions=1 type="Int32BE" buffer="slow" 40.12 % *** 1.450548e-31 buffers/buffer-read.js millions=1 type="Int32LE" buffer="fast" 40.56 % *** 2.584747e-49 buffers/buffer-read.js millions=1 type="Int32LE" buffer="slow" 40.08 % *** 5.036330e-36 buffers/buffer-read.js millions=1 type="Int8" buffer="fast" 8.87 % *** 1.774984e-04 buffers/buffer-read.js millions=1 type="Int8" buffer="slow" 6.47 % ** 9.316969e-03 buffers/buffer-read.js millions=1 type="UInt16BE" buffer="fast" 48.92 % *** 2.578342e-19 buffers/buffer-read.js millions=1 type="UInt16BE" buffer="slow" 45.00 % *** 1.151413e-23 buffers/buffer-read.js millions=1 type="UInt16LE" buffer="fast" 46.54 % *** 1.281878e-29 buffers/buffer-read.js millions=1 type="UInt16LE" buffer="slow" 42.38 % *** 1.109386e-17 buffers/buffer-read.js millions=1 type="UInt32BE" buffer="fast" 42.77 % *** 1.002809e-17 buffers/buffer-read.js millions=1 type="UInt32BE" buffer="slow" 45.23 % *** 9.716449e-51 buffers/buffer-read.js millions=1 type="UInt32LE" buffer="fast" 46.17 % *** 2.835040e-31 buffers/buffer-read.js millions=1 type="UInt32LE" buffer="slow" 43.88 % *** 2.064203e-19 buffers/buffer-read.js millions=1 type="UInt8" buffer="fast" 28.83 % *** 3.009173e-09 buffers/buffer-read.js millions=1 type="UInt8" buffer="slow" 27.84 % *** 1.684045e-10
Read performance (noAssert = true)
buffers/buffer-read.js millions=1 type="DoubleBE" buffer="fast" 96.18 % *** 5.957149e-67 buffers/buffer-read.js millions=1 type="DoubleBE" buffer="slow" 94.73 % *** 8.555417e-45 buffers/buffer-read.js millions=1 type="DoubleLE" buffer="fast" 92.88 % *** 1.762136e-33 buffers/buffer-read.js millions=1 type="DoubleLE" buffer="slow" 90.54 % *** 1.342842e-22 buffers/buffer-read.js millions=1 type="FloatBE" buffer="fast" 79.09 % *** 2.014614e-31 buffers/buffer-read.js millions=1 type="FloatBE" buffer="slow" 75.23 % *** 1.030442e-23 buffers/buffer-read.js millions=1 type="FloatLE" buffer="fast" 91.38 % *** 5.992152e-37 buffers/buffer-read.js millions=1 type="FloatLE" buffer="slow" 86.12 % *** 5.738088e-29 buffers/buffer-read.js millions=1 type="Int16BE" buffer="fast" -6.74 % *** 2.587222e-04 buffers/buffer-read.js millions=1 type="Int16BE" buffer="slow" -3.12 % 2.068941e-01 buffers/buffer-read.js millions=1 type="Int16LE" buffer="fast" -4.88 % * 3.088108e-02 buffers/buffer-read.js millions=1 type="Int16LE" buffer="slow" -2.24 % 2.779313e-01 buffers/buffer-read.js millions=1 type="Int32BE" buffer="fast" -4.57 % ** 1.824869e-03 buffers/buffer-read.js millions=1 type="Int32BE" buffer="slow" -3.24 % *** 9.967019e-05 buffers/buffer-read.js millions=1 type="Int32LE" buffer="fast" -3.68 % *** 1.375841e-06 buffers/buffer-read.js millions=1 type="Int32LE" buffer="slow" -0.82 % 3.765671e-01 buffers/buffer-read.js millions=1 type="Int8" buffer="fast" -5.11 % * 2.676871e-02 buffers/buffer-read.js millions=1 type="Int8" buffer="slow" -3.54 % 7.050412e-02 buffers/buffer-read.js millions=1 type="UInt16BE" buffer="fast" -3.33 % *** 4.430650e-07 buffers/buffer-read.js millions=1 type="UInt16BE" buffer="slow" 0.59 % 8.373744e-01 buffers/buffer-read.js millions=1 type="UInt16LE" buffer="fast" -4.46 % * 3.031628e-02 buffers/buffer-read.js millions=1 type="UInt16LE" buffer="slow" -1.96 % 6.235275e-02 buffers/buffer-read.js millions=1 type="UInt32BE" buffer="fast" -6.99 % ** 1.140164e-03 buffers/buffer-read.js millions=1 type="UInt32BE" buffer="slow" -2.01 % 4.762397e-01 buffers/buffer-read.js millions=1 type="UInt32LE" buffer="fast" -0.74 % 6.419403e-01 buffers/buffer-read.js millions=1 type="UInt32LE" buffer="slow" 0.93 % 6.486999e-01 buffers/buffer-read.js millions=1 type="UInt8" buffer="fast" -7.20 % *** 4.627997e-06 buffers/buffer-read.js millions=1 type="UInt8" buffer="slow" -10.15 % *** 1.535367e-22
Read performance floats (noAssert = false)
buffers/buffer-read-float.js millions=1 value="big" endian="BE" type="Double" 95.89 % *** 9.066634e-27 buffers/buffer-read-float.js millions=1 value="big" endian="BE" type="Float" 88.07 % *** 1.658029e-19 buffers/buffer-read-float.js millions=1 value="big" endian="LE" type="Double" 92.99 % *** 2.961614e-44 buffers/buffer-read-float.js millions=1 value="big" endian="LE" type="Float" 99.96 % *** 7.960766e-34 buffers/buffer-read-float.js millions=1 value="inf" endian="BE" type="Double" 96.82 % *** 7.438937e-45 buffers/buffer-read-float.js millions=1 value="inf" endian="BE" type="Float" 97.98 % *** 4.801808e-39 buffers/buffer-read-float.js millions=1 value="inf" endian="LE" type="Double" 95.05 % *** 1.743159e-59 buffers/buffer-read-float.js millions=1 value="inf" endian="LE" type="Float" 92.51 % *** 1.491572e-22 buffers/buffer-read-float.js millions=1 value="nan" endian="BE" type="Double" 114.86 % *** 8.687114e-48 buffers/buffer-read-float.js millions=1 value="nan" endian="BE" type="Float" 109.15 % *** 5.278654e-43 buffers/buffer-read-float.js millions=1 value="nan" endian="LE" type="Double" 110.30 % *** 3.773668e-54 buffers/buffer-read-float.js millions=1 value="nan" endian="LE" type="Float" 101.27 % *** 1.481442e-31 buffers/buffer-read-float.js millions=1 value="small" endian="BE" type="Double" 113.31 % *** 3.080025e-27 buffers/buffer-read-float.js millions=1 value="small" endian="BE" type="Float" 87.55 % *** 2.188483e-24 buffers/buffer-read-float.js millions=1 value="small" endian="LE" type="Double" 109.67 % *** 2.279337e-25 buffers/buffer-read-float.js millions=1 value="small" endian="LE" type="Float" 89.58 % *** 6.105007e-19 buffers/buffer-read-float.js millions=1 value="zero" endian="BE" type="Double" 113.78 % *** 1.112012e-35 buffers/buffer-read-float.js millions=1 value="zero" endian="BE" type="Float" 94.85 % *** 1.212354e-34 buffers/buffer-read-float.js millions=1 value="zero" endian="LE" type="Double" 107.37 % *** 1.747051e-29 buffers/buffer-read-float.js millions=1 value="zero" endian="LE" type="Float" 104.06 % *** 4.100876e-49
Read performance floats (noAssert = true)
buffers/buffer-read-float.js millions=1 value="big" endian="BE" type="Double" 80.58 % *** 1.055222e-26 buffers/buffer-read-float.js millions=1 value="big" endian="BE" type="Float" 84.33 % *** 2.986016e-25 buffers/buffer-read-float.js millions=1 value="big" endian="LE" type="Double" 77.97 % *** 7.124429e-26 buffers/buffer-read-float.js millions=1 value="big" endian="LE" type="Float" 94.68 % *** 4.546175e-49 buffers/buffer-read-float.js millions=1 value="inf" endian="BE" type="Double" 72.64 % *** 1.320828e-18 buffers/buffer-read-float.js millions=1 value="inf" endian="BE" type="Float" 78.54 % *** 1.537538e-30 buffers/buffer-read-float.js millions=1 value="inf" endian="LE" type="Double" 76.42 % *** 5.591856e-44 buffers/buffer-read-float.js millions=1 value="inf" endian="LE" type="Float" 81.52 % *** 2.768936e-30 buffers/buffer-read-float.js millions=1 value="nan" endian="BE" type="Double" 94.16 % *** 1.050472e-32 buffers/buffer-read-float.js millions=1 value="nan" endian="BE" type="Float" 78.05 % *** 1.960494e-27 buffers/buffer-read-float.js millions=1 value="nan" endian="LE" type="Double" 92.07 % *** 3.095763e-30 buffers/buffer-read-float.js millions=1 value="nan" endian="LE" type="Float" 80.97 % *** 1.393600e-30 buffers/buffer-read-float.js millions=1 value="small" endian="BE" type="Double" 93.51 % *** 2.107239e-23 buffers/buffer-read-float.js millions=1 value="small" endian="BE" type="Float" 81.34 % *** 1.662221e-30 buffers/buffer-read-float.js millions=1 value="small" endian="LE" type="Double" 97.24 % *** 7.042144e-30 buffers/buffer-read-float.js millions=1 value="small" endian="LE" type="Float" 84.74 % *** 4.624920e-27 buffers/buffer-read-float.js millions=1 value="zero" endian="BE" type="Double" 101.43 % *** 5.679133e-35 buffers/buffer-read-float.js millions=1 value="zero" endian="BE" type="Float" 77.81 % *** 4.755817e-39 buffers/buffer-read-float.js millions=1 value="zero" endian="LE" type="Double" 101.23 % *** 3.239133e-33 buffers/buffer-read-float.js millions=1 value="zero" endian="LE" type="Float" 83.54 % *** 1.523533e-17
Read performance U?Int(B|L)E (noAssert = false)
buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntBE" buffer="fast" 14.71 % *** 2.643644e-07 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntBE" buffer="slow" 11.32 % *** 7.172494e-08 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntLE" buffer="fast" 9.01 % *** 2.802523e-10 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntLE" buffer="slow" 12.31 % *** 1.048382e-10 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntBE" buffer="fast" 37.94 % *** 3.395681e-15 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntBE" buffer="slow" 44.59 % *** 1.792566e-22 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntLE" buffer="fast" 35.88 % *** 8.217277e-09 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntLE" buffer="slow" 44.89 % *** 7.567703e-21 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntBE" buffer="fast" 20.82 % *** 6.847277e-12 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntBE" buffer="slow" 17.31 % *** 6.304545e-09 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntLE" buffer="fast" 38.19 % *** 1.321802e-20 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntLE" buffer="slow" 38.83 % *** 1.119840e-21 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntBE" buffer="fast" 84.49 % *** 1.060500e-22 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntBE" buffer="slow" 82.50 % *** 1.535273e-22 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntLE" buffer="fast" 107.86 % *** 1.296005e-45 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntLE" buffer="slow" 110.61 % *** 2.135937e-51 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntBE" buffer="fast" 53.76 % *** 1.185280e-16 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntBE" buffer="slow" 49.06 % *** 3.718414e-16 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntLE" buffer="fast" 53.18 % *** 9.260745e-26 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntLE" buffer="slow" 51.86 % *** 3.336253e-27 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntBE" buffer="fast" 169.80 % *** 4.351320e-56 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntBE" buffer="slow" 164.78 % *** 2.927265e-51 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntLE" buffer="fast" 155.65 % *** 3.455920e-59 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntLE" buffer="slow" 166.69 % *** 5.386096e-47 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntBE" buffer="fast" 227.85 % *** 6.249926e-63 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntBE" buffer="slow" 216.86 % *** 1.519343e-29 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntLE" buffer="fast" 213.30 % *** 8.223493e-30 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntLE" buffer="slow" 214.14 % *** 2.757804e-54 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntBE" buffer="fast" 190.51 % *** 1.976842e-54 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntBE" buffer="slow" 184.19 % *** 2.481297e-30 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntLE" buffer="fast" 188.55 % *** 3.295982e-32 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntLE" buffer="slow" 180.37 % *** 1.361985e-27 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntBE" buffer="fast" 126.59 % *** 3.541448e-28 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntBE" buffer="slow" 128.81 % *** 5.591153e-35 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntLE" buffer="fast" 125.57 % *** 4.573430e-27 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntLE" buffer="slow" 131.62 % *** 8.250501e-30 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntBE" buffer="fast" 231.82 % *** 3.265581e-55 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntBE" buffer="slow" 239.73 % *** 1.951249e-70 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntLE" buffer="fast" 234.62 % *** 6.031666e-63 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntLE" buffer="slow" 232.60 % *** 6.845493e-51 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntBE" buffer="fast" 124.84 % *** 2.607092e-34 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntBE" buffer="slow" 124.90 % *** 1.503038e-37 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntLE" buffer="fast" 127.04 % *** 3.788626e-28 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntLE" buffer="slow" 109.71 % *** 5.212568e-17 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntBE" buffer="fast" 272.46 % *** 1.496965e-35 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntBE" buffer="slow" 268.37 % *** 3.996840e-38 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntLE" buffer="fast" 266.41 % *** 3.436060e-32 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntLE" buffer="slow" 274.94 % *** 3.708211e-57
Read performance U?Int(B|L)E (noAssert = true)
buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntBE" buffer="fast" -11.75 % *** 5.434881e-27 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntBE" buffer="slow" -12.59 % *** 8.445023e-11 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntLE" buffer="fast" -13.26 % *** 7.432462e-05 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="IntLE" buffer="slow" -11.43 % *** 1.598212e-08 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntBE" buffer="fast" -12.28 % *** 2.251288e-07 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntBE" buffer="slow" -12.66 % *** 2.005521e-27 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntLE" buffer="fast" -11.25 % ** 8.633406e-03 buffers/buffer-read-with-byteLength.js byteLength=1 millions=1 type="UIntLE" buffer="slow" -13.79 % *** 4.185630e-08 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntBE" buffer="fast" 5.65 % *** 7.833097e-05 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntBE" buffer="slow" 3.14 % 6.123062e-02 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntLE" buffer="fast" 20.47 % *** 3.392909e-05 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="IntLE" buffer="slow" 18.76 % *** 2.253595e-08 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntBE" buffer="fast" 47.07 % *** 1.241779e-10 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntBE" buffer="slow" 52.97 % *** 9.368908e-27 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntLE" buffer="fast" 73.68 % *** 5.399862e-29 buffers/buffer-read-with-byteLength.js byteLength=2 millions=1 type="UIntLE" buffer="slow" 71.15 % *** 7.431925e-31 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntBE" buffer="fast" 36.11 % *** 1.537709e-21 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntBE" buffer="slow" 32.52 % *** 3.579312e-11 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntLE" buffer="fast" 36.56 % *** 8.804138e-21 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="IntLE" buffer="slow" 38.13 % *** 1.071394e-23 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntBE" buffer="fast" 154.15 % *** 1.018753e-33 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntBE" buffer="slow" 147.62 % *** 5.070713e-58 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntLE" buffer="fast" 129.54 % *** 1.414803e-19 buffers/buffer-read-with-byteLength.js byteLength=3 millions=1 type="UIntLE" buffer="slow" 150.85 % *** 8.690505e-41 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntBE" buffer="fast" 219.18 % *** 5.574215e-59 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntBE" buffer="slow" 205.96 % *** 1.143638e-26 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntLE" buffer="fast" 210.13 % *** 2.327704e-29 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="IntLE" buffer="slow" 205.14 % *** 6.211261e-22 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntBE" buffer="fast" 193.70 % *** 5.548951e-55 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntBE" buffer="slow" 194.62 % *** 2.927599e-42 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntLE" buffer="fast" 193.46 % *** 1.284468e-56 buffers/buffer-read-with-byteLength.js byteLength=4 millions=1 type="UIntLE" buffer="slow" 180.99 % *** 1.737886e-32 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntBE" buffer="fast" 120.25 % *** 1.464226e-60 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntBE" buffer="slow" 121.19 % *** 1.954336e-57 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntLE" buffer="fast" 124.40 % *** 7.956237e-45 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="IntLE" buffer="slow" 114.87 % *** 3.476079e-26 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntBE" buffer="fast" 222.33 % *** 3.774128e-43 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntBE" buffer="slow" 224.60 % *** 7.165524e-36 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntLE" buffer="fast" 233.35 % *** 1.692817e-28 buffers/buffer-read-with-byteLength.js byteLength=5 millions=1 type="UIntLE" buffer="slow" 241.92 % *** 2.520403e-64 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntBE" buffer="fast" 118.00 % *** 4.480270e-54 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntBE" buffer="slow" 114.99 % *** 1.020603e-19 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntLE" buffer="fast" 118.73 % *** 3.168465e-28 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="IntLE" buffer="slow" 118.74 % *** 1.694586e-41 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntBE" buffer="fast" 246.70 % *** 2.903501e-26 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntBE" buffer="slow" 268.76 % *** 3.243999e-58 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntLE" buffer="fast" 256.27 % *** 2.451812e-30 buffers/buffer-read-with-byteLength.js byteLength=6 millions=1 type="UIntLE" buffer="slow" 267.32 % *** 5.686033e-58
Fixes #18115 (closed) Fixes #12179 (closed) Fixes #8724 (closed)
CI: https://ci.nodejs.org/job/node-test-pull-request/12751/
CI https://ci.nodejs.org/job/node-test-pull-request/12757/
Checklist
-
make -j4 test
(UNIX), orvcbuild test
(Windows) passes -
tests and/or benchmarks are included -
documentation is changed or added -
commit message follows commit guidelines
Affected core subsystem(s)
buffer, benchmark, test