nodejs / CTC

Node.js Core Technical Committee & Collaborators
80 stars 27 forks source link

V8 5.9 & Node.js 8.0 #146

Closed rvagg closed 7 years ago

rvagg commented 7 years ago
  1. We have perf regressions with 5.9 that seem fairly serious, at least when looked at in our microbenchmark suite, at least from the one run that was done early on
  2. 6.0 doesn't appear to have any difference from those benchmarks (so I'm hearing, have no confirmed any of this myself), this suggests to me that we're not going to get much upstream help in reigning in perf problems; so see next point:
  3. Our "CrankshaftScript" is going to need heavy-handed refactoring to make it "TurboFanScript", it's unlikely to be a clean process given how much untangling will need to be done—I'd expect us to hit a bunch of edge cases we don't have tests for, just because that's the nature of perf optimised crazy-code, and this will be ongoing too as the process of learning how to pander to TurboFan is going to be a long one (I think?)
  4. We are heading toward an LTS and the window is smaller than normal but we must stabilise early and not be scrambling to apply lipstick if we discover that it's looking like a pig

We have a really good record with our two LTS lines so far, I'm really concerned we're just rolling forward into a mini disaster for 8.0 LTS without weighing up the concerns.

@vsemozhetbyt and @targos so far appear to be the only ones who have investigated this, posted in https://github.com/nodejs/node/issues/11851 which used a 5.9 candidate. Copied here for easier digestion:

arrays ``` improvement confidence p.value arrays\\var-int.js n=25 type="Array" 2.12 % *** 1.911996e-11 arrays\\var-int.js n=25 type="Buffer" -1.39 % *** 2.953185e-13 arrays\\var-int.js n=25 type="Float32Array" 1.36 % *** 4.482114e-21 arrays\\var-int.js n=25 type="Float64Array" -1.29 % *** 3.712094e-13 arrays\\var-int.js n=25 type="Int16Array" -1.71 % *** 3.185373e-15 arrays\\var-int.js n=25 type="Int32Array" -0.84 % *** 3.184537e-04 arrays\\var-int.js n=25 type="Int8Array" -1.43 % *** 2.081429e-16 arrays\\var-int.js n=25 type="Uint16Array" -1.61 % *** 1.591048e-17 arrays\\var-int.js n=25 type="Uint32Array" -0.51 % * 4.560219e-02 arrays\\var-int.js n=25 type="Uint8Array" -1.42 % *** 3.315598e-35 arrays\\zero-float.js n=25 type="Array" -0.29 % * 2.067735e-02 arrays\\zero-float.js n=25 type="Buffer" 0.81 % *** 1.432181e-14 arrays\\zero-float.js n=25 type="Float32Array" 10.16 % *** 1.887618e-43 arrays\\zero-float.js n=25 type="Float64Array" 0.37 % ** 1.180476e-03 arrays\\zero-float.js n=25 type="Int16Array" -1.19 % *** 7.951452e-28 arrays\\zero-float.js n=25 type="Int32Array" -6.52 % *** 1.214743e-42 arrays\\zero-float.js n=25 type="Int8Array" -17.88 % *** 7.204014e-81 arrays\\zero-float.js n=25 type="Uint16Array" -1.16 % *** 2.603611e-21 arrays\\zero-float.js n=25 type="Uint32Array" -6.40 % *** 5.803861e-43 arrays\\zero-float.js n=25 type="Uint8Array" -17.86 % *** 7.705079e-84 arrays\\zero-int.js n=25 type="Array" -0.43 % * 3.411995e-02 arrays\\zero-int.js n=25 type="Buffer" 0.93 % *** 3.097691e-12 arrays\\zero-int.js n=25 type="Float32Array" 10.41 % *** 3.242834e-58 arrays\\zero-int.js n=25 type="Float64Array" 0.61 % ** 6.996484e-03 arrays\\zero-int.js n=25 type="Int16Array" -1.18 % *** 7.198962e-17 arrays\\zero-int.js n=25 type="Int32Array" -6.24 % *** 2.192567e-42 arrays\\zero-int.js n=25 type="Int8Array" -17.80 % *** 4.249127e-61 arrays\\zero-int.js n=25 type="Uint16Array" -1.04 % *** 1.051799e-17 arrays\\zero-int.js n=25 type="Uint32Array" -6.41 % *** 7.414706e-53 arrays\\zero-int.js n=25 type="Uint8Array" -17.98 % *** 6.231374e-72 ```
arrays ("fixed" version by @targos) ``` improvement confidence p.value arrays/var-int.js n=25 type="Array" -1.05 % 8.210770e-01 arrays/var-int.js n=25 type="Buffer" -1.54 % 7.566834e-02 arrays/var-int.js n=25 type="Float32Array" 4.37 % 2.336688e-01 arrays/var-int.js n=25 type="Float64Array" 4.08 % 3.362891e-01 arrays/var-int.js n=25 type="Int16Array" -0.05 % 9.828921e-01 arrays/var-int.js n=25 type="Int32Array" -0.33 % 9.339843e-01 arrays/var-int.js n=25 type="Int8Array" -1.18 % 2.395664e-01 arrays/var-int.js n=25 type="Uint16Array" -0.40 % 8.660353e-01 arrays/var-int.js n=25 type="Uint32Array" -0.03 % 9.929733e-01 arrays/var-int.js n=25 type="Uint8Array" -1.43 % 1.526402e-01 arrays/zero-float.js n=25 type="Array" -1.17 % 8.379417e-01 arrays/zero-float.js n=25 type="Buffer" 9.29 % *** 5.629907e-07 arrays/zero-float.js n=25 type="Float32Array" 18.19 % *** 9.789400e-05 arrays/zero-float.js n=25 type="Float64Array" -0.48 % 9.050489e-01 arrays/zero-float.js n=25 type="Int16Array" 9.51 % ** 2.217754e-03 arrays/zero-float.js n=25 type="Int32Array" 17.43 % ** 1.694204e-03 arrays/zero-float.js n=25 type="Int8Array" 10.55 % *** 4.225859e-08 arrays/zero-float.js n=25 type="Uint16Array" 15.36 % *** 5.441519e-06 arrays/zero-float.js n=25 type="Uint32Array" 12.27 % ** 5.170996e-03 arrays/zero-float.js n=25 type="Uint8Array" 10.37 % *** 4.785524e-09 arrays/zero-int.js n=25 type="Array" -0.25 % 9.488216e-01 arrays/zero-int.js n=25 type="Buffer" 9.42 % *** 3.878194e-09 arrays/zero-int.js n=25 type="Float32Array" 18.75 % *** 6.911246e-05 arrays/zero-int.js n=25 type="Float64Array" -0.60 % 8.775090e-01 arrays/zero-int.js n=25 type="Int16Array" 11.43 % *** 4.247462e-07 arrays/zero-int.js n=25 type="Int32Array" 10.80 % *** 1.130166e-05 arrays/zero-int.js n=25 type="Int8Array" 9.77 % *** 1.961177e-09 arrays/zero-int.js n=25 type="Uint16Array" 8.71 % *** 3.570013e-04 arrays/zero-int.js n=25 type="Uint32Array" 11.22 % * 1.067604e-02 arrays/zero-int.js n=25 type="Uint8Array" 11.26 % *** 1.952135e-13 ```
assert ``` improvement confidence p.value assert\\deepequal-buffer.js method="nonstrict" len=100 n=1000 6.08 % *** 2.240694e-16 assert\\deepequal-buffer.js method="strict" len=100 n=1000 6.36 % *** 1.715121e-08 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="array" 11.16 % *** 3.089537e-20 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="boolean" 11.65 % *** 6.319150e-35 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="new-array" 11.43 % *** 1.019362e-28 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="null" 11.81 % *** 6.516888e-28 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="number" 10.07 % *** 3.636875e-23 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="object" 11.48 % *** 2.818413e-35 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="string" 11.38 % *** 8.847026e-29 assert\\deepequal-prims-and-objs-big-array.js method="nonstrict" len=100000 n=25 prim="undefined" 11.83 % *** 2.848567e-29 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="array" 11.18 % *** 1.020906e-28 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="boolean" 10.51 % *** 5.346165e-17 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="new-array" 11.35 % *** 6.250137e-27 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="null" 10.45 % *** 2.073088e-24 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="number" 10.37 % *** 1.018234e-15 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="object" 10.44 % *** 3.487968e-24 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="string" 11.79 % *** 1.710809e-38 assert\\deepequal-prims-and-objs-big-array.js method="strict" len=100000 n=25 prim="undefined" 10.91 % *** 3.133955e-27 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="array" 39.25 % *** 2.220953e-63 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="boolean" 39.48 % *** 3.117618e-82 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="new-array" 40.43 % *** 1.118514e-73 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="null" 39.43 % *** 6.743661e-77 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="number" 36.70 % *** 8.813610e-64 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="object" 40.04 % *** 2.289447e-64 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="string" 39.03 % *** 1.345610e-76 assert\\deepequal-prims-and-objs-big-loop.js method="nonstrict" n=1000000 prim="undefined" 39.12 % *** 2.970695e-76 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="array" 36.64 % *** 3.348739e-60 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="boolean" 33.43 % *** 1.410337e-65 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="new-array" 35.21 % *** 6.250969e-64 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="null" 33.86 % *** 1.815821e-64 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="number" 32.49 % *** 2.435150e-57 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="object" 36.99 % *** 3.538131e-46 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="string" 33.83 % *** 2.264266e-56 assert\\deepequal-prims-and-objs-big-loop.js method="strict" n=1000000 prim="undefined" 34.27 % *** 2.675520e-61 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Float32Array" -11.66 % *** 7.849993e-27 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Float64Array" -11.36 % *** 3.903625e-29 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Int16Array" 8.10 % *** 1.298645e-16 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Int32Array" 6.88 % *** 4.351738e-15 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Int8Array" 10.21 % *** 3.566406e-21 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Uint16Array" 6.94 % *** 6.770045e-14 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Uint32Array" 7.38 % *** 1.083080e-12 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Uint8Array" 7.85 % *** 5.187461e-18 assert\\deepequal-typedarrays.js len=1000000 method="nonstrict" n=1 type="Uint8ClampedArray" 8.13 % *** 7.616631e-16 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Float32Array" -11.03 % *** 6.610454e-66 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Float64Array" -11.06 % *** 2.551550e-46 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Int16Array" 0.60 % 5.300335e-01 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Int32Array" 0.09 % 8.860152e-01 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Int8Array" 5.09 % *** 2.161384e-04 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Uint16Array" 3.97 % ** 2.187538e-03 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Uint32Array" 0.90 % 4.287213e-01 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Uint8Array" 1.67 % 9.340617e-02 assert\\deepequal-typedarrays.js len=1000000 method="strict" n=1 type="Uint8ClampedArray" 3.99 % *** 9.655741e-04 ```
buffers ``` improvement confidence p.value buffers\\buffer-base64-decode.js n=32 -0.03 % 6.813796e-01 buffers\\buffer-base64-encode.js n=32 len=67108864 0.10 % 7.395115e-02 buffers\\buffer-bytelength.js n=5000000 len=1 encoding="base64" 16.14 % *** 5.629742e-46 buffers\\buffer-bytelength.js n=5000000 len=1 encoding="utf8" -36.00 % *** 2.712131e-60 buffers\\buffer-bytelength.js n=5000000 len=16 encoding="base64" 17.67 % *** 8.234877e-53 buffers\\buffer-bytelength.js n=5000000 len=16 encoding="utf8" -9.00 % *** 6.554314e-47 buffers\\buffer-bytelength.js n=5000000 len=2 encoding="base64" 14.62 % *** 1.496880e-30 buffers\\buffer-bytelength.js n=5000000 len=2 encoding="utf8" -27.22 % *** 4.940651e-70 buffers\\buffer-bytelength.js n=5000000 len=256 encoding="base64" 15.63 % *** 5.408900e-35 buffers\\buffer-bytelength.js n=5000000 len=256 encoding="utf8" -1.68 % *** 1.306409e-05 buffers\\buffer-bytelength.js n=5000000 len=4 encoding="base64" 17.38 % *** 8.353420e-48 buffers\\buffer-bytelength.js n=5000000 len=4 encoding="utf8" -23.14 % *** 2.336540e-62 buffers\\buffer-bytelength.js n=5000000 len=64 encoding="base64" 17.70 % *** 9.030145e-49 buffers\\buffer-bytelength.js n=5000000 len=64 encoding="utf8" -3.25 % *** 2.280305e-12 buffers\\buffer-compare-instance-method.js millions=1 args=1 size=1024 -11.50 % *** 2.000140e-17 buffers\\buffer-compare-instance-method.js millions=1 args=1 size=16 -12.12 % *** 2.153111e-25 buffers\\buffer-compare-instance-method.js millions=1 args=1 size=16386 2.15 % 3.759710e-01 buffers\\buffer-compare-instance-method.js millions=1 args=1 size=4096 -11.47 % *** 1.230915e-05 buffers\\buffer-compare-instance-method.js millions=1 args=1 size=512 -10.09 % *** 3.727958e-19 buffers\\buffer-compare-instance-method.js millions=1 args=2 size=1024 -19.04 % *** 7.673003e-27 buffers\\buffer-compare-instance-method.js millions=1 args=2 size=16 -21.40 % *** 3.935922e-62 buffers\\buffer-compare-instance-method.js millions=1 args=2 size=16386 -2.74 % 1.174619e-01 buffers\\buffer-compare-instance-method.js millions=1 args=2 size=4096 -15.96 % *** 7.638449e-11 buffers\\buffer-compare-instance-method.js millions=1 args=2 size=512 -19.64 % *** 5.566149e-30 buffers\\buffer-compare-instance-method.js millions=1 args=3 size=1024 -16.32 % *** 9.753637e-24 buffers\\buffer-compare-instance-method.js millions=1 args=3 size=16 -19.00 % *** 2.905866e-60 buffers\\buffer-compare-instance-method.js millions=1 args=3 size=16386 -3.50 % *** 3.463127e-04 buffers\\buffer-compare-instance-method.js millions=1 args=3 size=4096 -15.93 % *** 6.136367e-12 buffers\\buffer-compare-instance-method.js millions=1 args=3 size=512 -17.67 % *** 2.211209e-33 buffers\\buffer-compare-instance-method.js millions=1 args=4 size=1024 -17.24 % *** 3.824330e-29 buffers\\buffer-compare-instance-method.js millions=1 args=4 size=16 -19.58 % *** 1.338838e-38 buffers\\buffer-compare-instance-method.js millions=1 args=4 size=16386 -3.50 % *** 2.668278e-06 buffers\\buffer-compare-instance-method.js millions=1 args=4 size=4096 -15.32 % *** 4.822259e-11 buffers\\buffer-compare-instance-method.js millions=1 args=4 size=512 -16.30 % *** 3.251165e-25 buffers\\buffer-compare-instance-method.js millions=1 args=5 size=1024 -0.20 % 8.718793e-01 buffers\\buffer-compare-instance-method.js millions=1 args=5 size=16 -0.35 % 3.508750e-01 buffers\\buffer-compare-instance-method.js millions=1 args=5 size=16386 3.04 % ** 1.167276e-03 buffers\\buffer-compare-instance-method.js millions=1 args=5 size=4096 -4.48 % * 3.204543e-02 buffers\\buffer-compare-instance-method.js millions=1 args=5 size=512 1.06 % 8.748816e-02 buffers\\buffer-compare-offset.js millions=1 size=1024 method="offset" -3.03 % *** 1.757880e-11 buffers\\buffer-compare-offset.js millions=1 size=1024 method="slice" 7.19 % *** 9.960328e-16 buffers\\buffer-compare-offset.js millions=1 size=16 method="offset" -3.49 % *** 1.237199e-11 buffers\\buffer-compare-offset.js millions=1 size=16 method="slice" 7.24 % *** 1.006812e-19 buffers\\buffer-compare-offset.js millions=1 size=16386 method="offset" -3.00 % *** 5.300663e-09 buffers\\buffer-compare-offset.js millions=1 size=16386 method="slice" 7.22 % *** 6.424469e-16 buffers\\buffer-compare-offset.js millions=1 size=4096 method="offset" -3.75 % *** 2.294207e-14 buffers\\buffer-compare-offset.js millions=1 size=4096 method="slice" 7.18 % *** 3.934175e-20 buffers\\buffer-compare-offset.js millions=1 size=512 method="offset" -3.34 % *** 2.742405e-11 buffers\\buffer-compare-offset.js millions=1 size=512 method="slice" 7.59 % *** 8.893416e-20 buffers\\buffer-compare.js millions=1 size=1024 -21.69 % *** 2.710130e-27 buffers\\buffer-compare.js millions=1 size=16 -27.15 % *** 4.754943e-54 buffers\\buffer-compare.js millions=1 size=16386 -5.12 % ** 1.333052e-03 buffers\\buffer-compare.js millions=1 size=4096 -16.47 % *** 2.029561e-11 buffers\\buffer-compare.js millions=1 size=512 -23.08 % *** 9.287436e-34 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=1 pieces=1 -4.73 % *** 7.982186e-07 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=1 pieces=16 -26.40 % *** 4.427981e-42 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=1 pieces=4 -19.26 % *** 1.195433e-37 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=16 pieces=1 -9.86 % *** 9.593113e-24 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=16 pieces=16 -24.97 % *** 3.166334e-28 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=16 pieces=4 -21.01 % *** 2.224996e-52 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=256 pieces=1 -6.38 % *** 4.025680e-17 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=256 pieces=16 -12.39 % *** 1.076091e-51 buffers\\buffer-concat.js n=1024 withTotalLength=0 pieceSize=256 pieces=4 -13.81 % *** 2.545945e-52 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=1 pieces=1 -3.94 % *** 4.046170e-11 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=1 pieces=16 -29.76 % *** 1.779827e-50 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=1 pieces=4 -19.35 % *** 1.488346e-44 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=16 pieces=1 -12.40 % *** 2.748948e-26 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=16 pieces=16 -30.48 % *** 5.782960e-53 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=16 pieces=4 -22.38 % *** 2.518032e-47 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=256 pieces=1 -7.67 % *** 1.012370e-17 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=256 pieces=16 -13.33 % *** 6.172313e-47 buffers\\buffer-concat.js n=1024 withTotalLength=1 pieceSize=256 pieces=4 -12.97 % *** 1.221396e-50 buffers\\buffer-creation.js n=1024 len=10 type="buffer()" -5.87 % *** 9.479277e-09 buffers\\buffer-creation.js n=1024 len=10 type="fast-alloc-fill" 17.73 % *** 7.279321e-26 buffers\\buffer-creation.js n=1024 len=10 type="fast-alloc" -7.55 % *** 2.297406e-13 buffers\\buffer-creation.js n=1024 len=10 type="fast-allocUnsafe" -10.28 % *** 7.217664e-17 buffers\\buffer-creation.js n=1024 len=10 type="slow-allocUnsafe" 14.11 % *** 3.181184e-20 buffers\\buffer-creation.js n=1024 len=10 type="slow" 13.62 % *** 1.207137e-22 buffers\\buffer-creation.js n=1024 len=1024 type="buffer()" -3.41 % ** 1.440904e-03 buffers\\buffer-creation.js n=1024 len=1024 type="fast-alloc-fill" 9.64 % *** 1.272331e-12 buffers\\buffer-creation.js n=1024 len=1024 type="fast-alloc" 2.22 % * 3.739922e-02 buffers\\buffer-creation.js n=1024 len=1024 type="fast-allocUnsafe" -1.65 % 8.510120e-02 buffers\\buffer-creation.js n=1024 len=1024 type="slow-allocUnsafe" 10.84 % *** 2.302591e-14 buffers\\buffer-creation.js n=1024 len=1024 type="slow" 11.07 % *** 5.350467e-17 buffers\\buffer-creation.js n=1024 len=2048 type="buffer()" -1.89 % 7.896093e-02 buffers\\buffer-creation.js n=1024 len=2048 type="fast-alloc-fill" 5.82 % *** 1.278769e-06 buffers\\buffer-creation.js n=1024 len=2048 type="fast-alloc" 0.56 % 6.263182e-01 buffers\\buffer-creation.js n=1024 len=2048 type="fast-allocUnsafe" -0.13 % 8.992751e-01 buffers\\buffer-creation.js n=1024 len=2048 type="slow-allocUnsafe" 7.31 % *** 4.140525e-09 buffers\\buffer-creation.js n=1024 len=2048 type="slow" 7.26 % *** 1.368239e-08 buffers\\buffer-creation.js n=1024 len=4096 type="buffer()" 6.40 % *** 1.419849e-07 buffers\\buffer-creation.js n=1024 len=4096 type="fast-alloc-fill" 3.58 % ** 4.131086e-03 buffers\\buffer-creation.js n=1024 len=4096 type="fast-alloc" 0.23 % 8.587182e-01 buffers\\buffer-creation.js n=1024 len=4096 type="fast-allocUnsafe" 5.57 % *** 1.204951e-04 buffers\\buffer-creation.js n=1024 len=4096 type="slow-allocUnsafe" 4.85 % *** 3.717312e-05 buffers\\buffer-creation.js n=1024 len=4096 type="slow" 5.49 % *** 2.288046e-06 buffers\\buffer-creation.js n=1024 len=8192 type="buffer()" 7.39 % *** 1.701336e-07 buffers\\buffer-creation.js n=1024 len=8192 type="fast-alloc-fill" 4.18 % ** 2.611444e-03 buffers\\buffer-creation.js n=1024 len=8192 type="fast-alloc" 0.35 % 7.998885e-01 buffers\\buffer-creation.js n=1024 len=8192 type="fast-allocUnsafe" 7.71 % *** 2.536921e-08 buffers\\buffer-creation.js n=1024 len=8192 type="slow-allocUnsafe" 5.35 % *** 4.558921e-05 buffers\\buffer-creation.js n=1024 len=8192 type="slow" 4.37 % *** 6.654867e-04 buffers\\buffer-from.js n=1024 len=10 source="array" -0.31 % 5.470660e-01 buffers\\buffer-from.js n=1024 len=10 source="arraybuffer-middle" 30.70 % *** 6.190845e-54 buffers\\buffer-from.js n=1024 len=10 source="arraybuffer" -3.56 % *** 1.791732e-15 buffers\\buffer-from.js n=1024 len=10 source="buffer" -15.69 % *** 2.672736e-35 buffers\\buffer-from.js n=1024 len=10 source="object" 11.53 % *** 7.237769e-34 buffers\\buffer-from.js n=1024 len=10 source="string-base64" -9.66 % *** 1.494303e-18 buffers\\buffer-from.js n=1024 len=10 source="string" -23.06 % *** 9.883857e-39 buffers\\buffer-from.js n=1024 len=10 source="uint8array" -18.37 % *** 7.316612e-44 buffers\\buffer-from.js n=1024 len=2048 source="array" -10.80 % *** 1.411818e-67 buffers\\buffer-from.js n=1024 len=2048 source="arraybuffer-middle" 31.86 % *** 5.733511e-32 buffers\\buffer-from.js n=1024 len=2048 source="arraybuffer" -3.97 % *** 3.726409e-18 buffers\\buffer-from.js n=1024 len=2048 source="buffer" -3.65 % *** 4.177849e-30 buffers\\buffer-from.js n=1024 len=2048 source="object" 11.36 % *** 2.380623e-26 buffers\\buffer-from.js n=1024 len=2048 source="string-base64" -1.02 % *** 1.519490e-12 buffers\\buffer-from.js n=1024 len=2048 source="string" -3.18 % *** 1.079311e-24 buffers\\buffer-from.js n=1024 len=2048 source="uint8array" -3.01 % *** 1.284177e-16 buffers\\buffer-hex.js n=10000000 len=0 73.05 % *** 5.082105e-49 buffers\\buffer-hex.js n=10000000 len=1 -3.98 % *** 2.925840e-05 buffers\\buffer-hex.js n=10000000 len=1024 0.60 % *** 5.419991e-04 buffers\\buffer-hex.js n=10000000 len=64 2.13 % *** 8.823847e-05 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="--l" -0.35 % 7.264494e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="@" -2.20 % 8.007837e-02 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search=" to the Caterpillar" -0.98 % 3.668637e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="10x" -4.28 % *** 7.829767e-05 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="aaaaaaaaaaaaaaaaa" -0.42 % 6.726551e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="Alice" -17.45 % *** 9.162873e-22 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="among mad people" -0.63 % 4.632337e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="found it very" -0.57 % 5.543621e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="Gryphon" -0.71 % 4.706095e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="neighbouring pool" -1.05 % 2.966895e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="Ou est ma chatte?" -0.84 % 3.687903e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="Panther" -1.12 % 2.863537e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="Soo--oop" -0.49 % 6.841558e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="SQ" -0.03 % 9.784193e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="binary" search="venture to go near the house till she had brought herself down to" -0.72 % 4.944216e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="--l" -0.07 % 9.409791e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="@" -0.69 % 5.444296e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search=" to the Caterpillar" -0.71 % 4.911884e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="10x" -1.87 % 9.761129e-02 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="aaaaaaaaaaaaaaaaa" -0.74 % 4.598899e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="Alice" -13.47 % *** 3.310372e-09 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="among mad people" -1.03 % 2.974805e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="found it very" -0.65 % 4.837249e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="Gryphon" -0.79 % 4.449877e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="neighbouring pool" -0.32 % 7.452157e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="Ou est ma chatte?" -0.99 % 2.792177e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="Panther" -1.09 % 2.706123e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="Soo--oop" -0.65 % 5.341912e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="SQ" 0.48 % 6.780610e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="ucs2" search="venture to go near the house till she had brought herself down to" -0.60 % 5.555316e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="--l" -0.20 % 8.426501e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="@" -2.61 % * 3.890256e-02 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search=" to the Caterpillar" -0.68 % 5.012658e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="10x" -3.63 % ** 6.658883e-03 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="aaaaaaaaaaaaaaaaa" -0.74 % 4.829868e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="Alice" -22.10 % *** 1.089377e-24 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="among mad people" -0.79 % 4.160996e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="found it very" -0.60 % 5.340795e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="Gryphon" -0.59 % 5.592168e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="neighbouring pool" -0.90 % 3.061416e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="Ou est ma chatte?" -1.39 % 1.531039e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="Panther" -0.95 % 2.903631e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="Soo--oop" -0.57 % 5.153379e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="SQ" 0.15 % 9.035586e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="undefined" search="venture to go near the house till she had brought herself down to" -1.08 % 3.027459e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="--l" -0.21 % 8.410248e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="@" -2.11 % 1.269637e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search=" to the Caterpillar" -0.53 % 6.434224e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="10x" -4.32 % *** 1.255939e-04 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="aaaaaaaaaaaaaaaaa" -0.80 % 4.638854e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="Alice" -18.01 % *** 2.045080e-19 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="among mad people" -0.79 % 3.986172e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="found it very" -0.51 % 5.729769e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="Gryphon" -0.81 % 4.333457e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="neighbouring pool" -0.52 % 6.211223e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="Ou est ma chatte?" -0.47 % 6.280965e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="Panther" -1.07 % 2.578412e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="Soo--oop" -1.01 % 2.702615e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="SQ" 0.07 % 9.532958e-01 buffers\\buffer-indexof.js iter=1 type="buffer" encoding="utf8" search="venture to go near the house till she had brought herself down to" -0.88 % 3.541852e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="--l" -0.45 % 6.463735e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="@" -1.57 % 1.700239e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search=" to the Caterpillar" -1.20 % 2.721628e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="10x" -2.84 % * 2.053370e-02 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="aaaaaaaaaaaaaaaaa" -0.86 % 4.135523e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="Alice" -11.09 % *** 1.530140e-09 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="among mad people" -0.96 % 3.569128e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="found it very" -0.84 % 3.904320e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="Gryphon" -0.92 % 3.635840e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="neighbouring pool" -0.88 % 3.300754e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="Ou est ma chatte?" -0.78 % 4.058020e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="Panther" -0.97 % 3.600589e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="Soo--oop" -0.58 % 5.938500e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="SQ" 0.34 % 8.043807e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="binary" search="venture to go near the house till she had brought herself down to" -0.46 % 6.630097e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="--l" -0.04 % 9.704136e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="@" 2.29 % 7.465145e-02 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search=" to the Caterpillar" -0.37 % 7.305530e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="10x" 2.51 % * 4.197132e-02 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="aaaaaaaaaaaaaaaaa" -0.20 % 8.397360e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="Alice" -4.74 % *** 9.216821e-04 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="among mad people" -0.27 % 7.644037e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="found it very" -0.52 % 6.189075e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="Gryphon" -0.33 % 7.407495e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="neighbouring pool" -0.11 % 9.145351e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="Ou est ma chatte?" 0.89 % 3.138983e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="Panther" -0.85 % 3.848009e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="Soo--oop" -0.42 % 7.097964e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="SQ" 0.86 % 4.627404e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="ucs2" search="venture to go near the house till she had brought herself down to" 0.31 % 7.633400e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="--l" -0.15 % 8.893093e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="@" -2.89 % ** 2.437993e-03 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search=" to the Caterpillar" -0.90 % 3.905602e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="10x" -4.82 % *** 1.543522e-06 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="aaaaaaaaaaaaaaaaa" -0.80 % 4.418717e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="Alice" -17.79 % *** 6.256761e-20 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="among mad people" -1.25 % 2.014205e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="found it very" -0.80 % 3.713493e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="Gryphon" -0.34 % 7.258243e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="neighbouring pool" -0.84 % 3.322506e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="Ou est ma chatte?" -0.87 % 2.784203e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="Panther" -0.55 % 6.258945e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="Soo--oop" -0.72 % 3.835439e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="SQ" -0.12 % 9.215902e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="undefined" search="venture to go near the house till she had brought herself down to" -1.07 % 3.141827e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="--l" 0.01 % 9.939332e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="@" 0.30 % 7.906463e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search=" to the Caterpillar" -0.31 % 7.695421e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="10x" 0.16 % 9.135554e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="aaaaaaaaaaaaaaaaa" -0.64 % 5.492043e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="Alice" -2.21 % 1.540648e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="among mad people" -0.83 % 4.043682e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="found it very" -0.40 % 6.604813e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="Gryphon" -0.70 % 4.947166e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="neighbouring pool" -0.42 % 6.442356e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="Ou est ma chatte?" 0.18 % 8.669848e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="Panther" -0.91 % 3.515080e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="Soo--oop" -0.87 % 3.377439e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="SQ" 0.40 % 7.395111e-01 buffers\\buffer-indexof.js iter=1 type="string" encoding="utf8" search="venture to go near the house till she had brought herself down to" -0.08 % 9.333668e-01 buffers\\buffer-iterate.js n=1000 method="for" type="fast" size=1024 -38.66 % *** 4.488089e-44 buffers\\buffer-iterate.js n=1000 method="for" type="fast" size=16 -40.32 % *** 4.545685e-56 buffers\\buffer-iterate.js n=1000 method="for" type="fast" size=16386 -8.85 % *** 9.406173e-57 buffers\\buffer-iterate.js n=1000 method="for" type="fast" size=4096 -11.31 % *** 5.776087e-48 buffers\\buffer-iterate.js n=1000 method="for" type="fast" size=512 -46.63 % *** 5.050247e-35 buffers\\buffer-iterate.js n=1000 method="for" type="slow" size=1024 -38.26 % *** 1.155162e-38 buffers\\buffer-iterate.js n=1000 method="for" type="slow" size=16 -39.08 % *** 6.417078e-35 buffers\\buffer-iterate.js n=1000 method="for" type="slow" size=16386 -8.78 % *** 3.255136e-60 buffers\\buffer-iterate.js n=1000 method="for" type="slow" size=4096 -11.64 % *** 5.457078e-45 buffers\\buffer-iterate.js n=1000 method="for" type="slow" size=512 -47.29 % *** 2.690997e-46 buffers\\buffer-iterate.js n=1000 method="forOf" type="fast" size=1024 110.71 % *** 1.601002e-69 buffers\\buffer-iterate.js n=1000 method="forOf" type="fast" size=16 -3.08 % 3.674673e-01 buffers\\buffer-iterate.js n=1000 method="forOf" type="fast" size=16386 244.56 % *** 1.304915e-65 buffers\\buffer-iterate.js n=1000 method="forOf" type="fast" size=4096 173.75 % *** 2.706117e-61 buffers\\buffer-iterate.js n=1000 method="forOf" type="fast" size=512 65.27 % *** 8.025107e-71 buffers\\buffer-iterate.js n=1000 method="forOf" type="slow" size=1024 111.63 % *** 9.453410e-75 buffers\\buffer-iterate.js n=1000 method="forOf" type="slow" size=16 -4.00 % *** 1.470991e-08 buffers\\buffer-iterate.js n=1000 method="forOf" type="slow" size=16386 245.29 % *** 1.543723e-64 buffers\\buffer-iterate.js n=1000 method="forOf" type="slow" size=4096 177.26 % *** 3.199303e-89 buffers\\buffer-iterate.js n=1000 method="forOf" type="slow" size=512 64.54 % *** 4.567671e-53 buffers\\buffer-iterate.js n=1000 method="iterator" type="fast" size=1024 11.57 % *** 1.967961e-48 buffers\\buffer-iterate.js n=1000 method="iterator" type="fast" size=16 -49.67 % *** 2.815984e-51 buffers\\buffer-iterate.js n=1000 method="iterator" type="fast" size=16386 40.40 % *** 4.147217e-81 buffers\\buffer-iterate.js n=1000 method="iterator" type="fast" size=4096 30.28 % *** 6.559132e-69 buffers\\buffer-iterate.js n=1000 method="iterator" type="fast" size=512 -1.50 % *** 7.022152e-06 buffers\\buffer-iterate.js n=1000 method="iterator" type="slow" size=1024 12.50 % *** 3.389321e-48 buffers\\buffer-iterate.js n=1000 method="iterator" type="slow" size=16 -51.62 % *** 5.198335e-46 buffers\\buffer-iterate.js n=1000 method="iterator" type="slow" size=16386 40.45 % *** 8.650464e-81 buffers\\buffer-iterate.js n=1000 method="iterator" type="slow" size=4096 30.24 % *** 1.296496e-68 buffers\\buffer-iterate.js n=1000 method="iterator" type="slow" size=512 -0.92 % ** 1.131316e-03 buffers\\buffer-read.js millions=1 type="DoubleBE" buffer="fast" noAssert="false" -39.77 % *** 4.494981e-82 buffers\\buffer-read.js millions=1 type="DoubleBE" buffer="fast" noAssert="true" -40.36 % *** 9.270805e-83 buffers\\buffer-read.js millions=1 type="DoubleBE" buffer="slow" noAssert="false" -39.87 % *** 2.469591e-88 buffers\\buffer-read.js millions=1 type="DoubleBE" buffer="slow" noAssert="true" -39.95 % *** 1.905480e-78 buffers\\buffer-read.js millions=1 type="DoubleLE" buffer="fast" noAssert="false" -42.71 % *** 1.537101e-53 buffers\\buffer-read.js millions=1 type="DoubleLE" buffer="fast" noAssert="true" -41.59 % *** 5.188194e-50 buffers\\buffer-read.js millions=1 type="DoubleLE" buffer="slow" noAssert="false" -42.92 % *** 6.271103e-46 buffers\\buffer-read.js millions=1 type="DoubleLE" buffer="slow" noAssert="true" -40.60 % *** 6.360271e-46 buffers\\buffer-read.js millions=1 type="FloatBE" buffer="fast" noAssert="false" -36.68 % *** 9.102909e-73 buffers\\buffer-read.js millions=1 type="FloatBE" buffer="fast" noAssert="true" -37.52 % *** 4.027095e-77 buffers\\buffer-read.js millions=1 type="FloatBE" buffer="slow" noAssert="false" -36.55 % *** 1.428981e-66 buffers\\buffer-read.js millions=1 type="FloatBE" buffer="slow" noAssert="true" -37.41 % *** 2.018451e-76 buffers\\buffer-read.js millions=1 type="FloatLE" buffer="fast" noAssert="false" -38.29 % *** 4.356237e-53 buffers\\buffer-read.js millions=1 type="FloatLE" buffer="fast" noAssert="true" -40.63 % *** 5.012620e-81 buffers\\buffer-read.js millions=1 type="FloatLE" buffer="slow" noAssert="false" -38.80 % *** 3.198838e-55 buffers\\buffer-read.js millions=1 type="FloatLE" buffer="slow" noAssert="true" -40.26 % *** 7.326122e-70 buffers\\buffer-read.js millions=1 type="Int16BE" buffer="fast" noAssert="false" 19.06 % *** 1.403670e-30 buffers\\buffer-read.js millions=1 type="Int16BE" buffer="fast" noAssert="true" -27.04 % *** 2.933201e-43 buffers\\buffer-read.js millions=1 type="Int16BE" buffer="slow" noAssert="false" 18.64 % *** 1.137060e-36 buffers\\buffer-read.js millions=1 type="Int16BE" buffer="slow" noAssert="true" -27.24 % *** 1.160528e-32 buffers\\buffer-read.js millions=1 type="Int16LE" buffer="fast" noAssert="false" 19.66 % *** 1.784479e-29 buffers\\buffer-read.js millions=1 type="Int16LE" buffer="fast" noAssert="true" -27.80 % *** 1.643164e-42 buffers\\buffer-read.js millions=1 type="Int16LE" buffer="slow" noAssert="false" 18.40 % *** 7.945532e-36 buffers\\buffer-read.js millions=1 type="Int16LE" buffer="slow" noAssert="true" -26.02 % *** 4.235541e-26 buffers\\buffer-read.js millions=1 type="Int32BE" buffer="fast" noAssert="false" -1.19 % 3.034823e-01 buffers\\buffer-read.js millions=1 type="Int32BE" buffer="fast" noAssert="true" -47.40 % *** 1.243172e-43 buffers\\buffer-read.js millions=1 type="Int32BE" buffer="slow" noAssert="false" 0.81 % 2.872066e-01 buffers\\buffer-read.js millions=1 type="Int32BE" buffer="slow" noAssert="true" -47.13 % *** 9.286128e-28 buffers\\buffer-read.js millions=1 type="Int32LE" buffer="fast" noAssert="false" 2.62 % ** 6.505751e-03 buffers\\buffer-read.js millions=1 type="Int32LE" buffer="fast" noAssert="true" -42.77 % *** 9.960392e-42 buffers\\buffer-read.js millions=1 type="Int32LE" buffer="slow" noAssert="false" 2.59 % *** 3.431484e-05 buffers\\buffer-read.js millions=1 type="Int32LE" buffer="slow" noAssert="true" -42.23 % *** 2.721267e-36 buffers\\buffer-read.js millions=1 type="Int8" buffer="fast" noAssert="false" 14.11 % *** 1.021695e-36 buffers\\buffer-read.js millions=1 type="Int8" buffer="fast" noAssert="true" -26.83 % *** 1.598243e-41 buffers\\buffer-read.js millions=1 type="Int8" buffer="slow" noAssert="false" 13.58 % *** 4.622852e-34 buffers\\buffer-read.js millions=1 type="Int8" buffer="slow" noAssert="true" -26.74 % *** 3.749623e-44 buffers\\buffer-read.js millions=1 type="UInt16BE" buffer="fast" noAssert="false" 4.00 % *** 9.770175e-10 buffers\\buffer-read.js millions=1 type="UInt16BE" buffer="fast" noAssert="true" -43.99 % *** 2.389208e-53 buffers\\buffer-read.js millions=1 type="UInt16BE" buffer="slow" noAssert="false" 3.02 % *** 2.438014e-11 buffers\\buffer-read.js millions=1 type="UInt16BE" buffer="slow" noAssert="true" -43.48 % *** 1.778761e-52 buffers\\buffer-read.js millions=1 type="UInt16LE" buffer="fast" noAssert="false" 7.27 % *** 7.607707e-19 buffers\\buffer-read.js millions=1 type="UInt16LE" buffer="fast" noAssert="true" -37.75 % *** 1.282249e-42 buffers\\buffer-read.js millions=1 type="UInt16LE" buffer="slow" noAssert="false" 6.32 % *** 1.510428e-13 buffers\\buffer-read.js millions=1 type="UInt16LE" buffer="slow" noAssert="true" -39.37 % *** 1.188848e-49 buffers\\buffer-read.js millions=1 type="UInt32BE" buffer="fast" noAssert="false" -6.57 % *** 2.519559e-15 buffers\\buffer-read.js millions=1 type="UInt32BE" buffer="fast" noAssert="true" -50.93 % *** 1.031245e-44 buffers\\buffer-read.js millions=1 type="UInt32BE" buffer="slow" noAssert="false" -7.23 % *** 5.927445e-26 buffers\\buffer-read.js millions=1 type="UInt32BE" buffer="slow" noAssert="true" -51.02 % *** 4.138643e-51 buffers\\buffer-read.js millions=1 type="UInt32LE" buffer="fast" noAssert="false" -4.94 % *** 1.291956e-09 buffers\\buffer-read.js millions=1 type="UInt32LE" buffer="fast" noAssert="true" -49.31 % *** 2.610133e-49 buffers\\buffer-read.js millions=1 type="UInt32LE" buffer="slow" noAssert="false" -5.06 % *** 8.029210e-16 buffers\\buffer-read.js millions=1 type="UInt32LE" buffer="slow" noAssert="true" -48.99 % *** 3.672503e-40 buffers\\buffer-read.js millions=1 type="UInt8" buffer="fast" noAssert="false" -13.40 % *** 8.950667e-29 buffers\\buffer-read.js millions=1 type="UInt8" buffer="fast" noAssert="true" -54.61 % *** 4.233053e-39 buffers\\buffer-read.js millions=1 type="UInt8" buffer="slow" noAssert="false" -12.84 % *** 6.666907e-28 buffers\\buffer-read.js millions=1 type="UInt8" buffer="slow" noAssert="true" -54.34 % *** 2.847385e-36 buffers\\buffer-slice.js n=1024 type="fast" 18.66 % *** 4.017939e-23 buffers\\buffer-slice.js n=1024 type="slow" 18.22 % *** 5.380341e-28 buffers\\buffer-tojson.js len=0 n=10000 -29.94 % *** 2.279781e-35 buffers\\buffer-tojson.js len=10 n=10000 -50.51 % *** 4.138969e-30 buffers\\buffer-tojson.js len=256 n=10000 -6.61 % *** 1.909075e-12 buffers\\buffer-tojson.js len=4096 n=10000 0.61 % 3.305055e-01 buffers\\buffer-tostring.js n=10000000 len=0 arg="false" -45.06 % *** 1.052493e-64 buffers\\buffer-tostring.js n=10000000 len=0 arg="true" 141.33 % *** 2.570761e-49 buffers\\buffer-tostring.js n=10000000 len=1 arg="false" -29.80 % *** 1.295265e-36 buffers\\buffer-tostring.js n=10000000 len=1 arg="true" -23.91 % *** 5.613356e-50 buffers\\buffer-tostring.js n=10000000 len=1024 arg="false" -11.89 % *** 1.852139e-43 buffers\\buffer-tostring.js n=10000000 len=1024 arg="true" -7.67 % *** 1.280761e-22 buffers\\buffer-tostring.js n=10000000 len=64 arg="false" -32.36 % *** 3.080627e-63 buffers\\buffer-tostring.js n=10000000 len=64 arg="true" -23.21 % *** 1.418203e-37 buffers\\buffer-write.js millions=1 type="DoubleBE" buffer="fast" noAssert="false" -43.56 % *** 1.585645e-31 buffers\\buffer-write.js millions=1 type="DoubleBE" buffer="fast" noAssert="true" -44.91 % *** 3.569385e-44 buffers\\buffer-write.js millions=1 type="DoubleBE" buffer="slow" noAssert="false" -44.11 % *** 1.041960e-42 buffers\\buffer-write.js millions=1 type="DoubleBE" buffer="slow" noAssert="true" -43.94 % *** 1.257416e-34 buffers\\buffer-write.js millions=1 type="DoubleLE" buffer="fast" noAssert="false" -39.65 % *** 1.140142e-82 buffers\\buffer-write.js millions=1 type="DoubleLE" buffer="fast" noAssert="true" -42.72 % *** 1.151006e-80 buffers\\buffer-write.js millions=1 type="DoubleLE" buffer="slow" noAssert="false" -39.74 % *** 3.682974e-75 buffers\\buffer-write.js millions=1 type="DoubleLE" buffer="slow" noAssert="true" -42.39 % *** 1.113374e-74 buffers\\buffer-write.js millions=1 type="FloatBE" buffer="fast" noAssert="false" -41.31 % *** 8.648892e-40 buffers\\buffer-write.js millions=1 type="FloatBE" buffer="fast" noAssert="true" -41.94 % *** 1.885928e-37 buffers\\buffer-write.js millions=1 type="FloatBE" buffer="slow" noAssert="false" -40.38 % *** 6.572863e-39 buffers\\buffer-write.js millions=1 type="FloatBE" buffer="slow" noAssert="true" -44.10 % *** 7.293289e-41 buffers\\buffer-write.js millions=1 type="FloatLE" buffer="fast" noAssert="false" -40.11 % *** 1.285867e-38 buffers\\buffer-write.js millions=1 type="FloatLE" buffer="fast" noAssert="true" -41.97 % *** 3.338780e-27 buffers\\buffer-write.js millions=1 type="FloatLE" buffer="slow" noAssert="false" -40.85 % *** 1.234396e-37 buffers\\buffer-write.js millions=1 type="FloatLE" buffer="slow" noAssert="true" -42.77 % *** 8.299756e-37 buffers\\buffer-write.js millions=1 type="Int16BE" buffer="fast" noAssert="false" 12.51 % *** 1.082288e-32 buffers\\buffer-write.js millions=1 type="Int16BE" buffer="fast" noAssert="true" -38.73 % *** 3.306965e-39 buffers\\buffer-write.js millions=1 type="Int16BE" buffer="slow" noAssert="false" 12.64 % *** 5.858414e-26 buffers\\buffer-write.js millions=1 type="Int16BE" buffer="slow" noAssert="true" -38.80 % *** 2.644936e-46 buffers\\buffer-write.js millions=1 type="Int16LE" buffer="fast" noAssert="false" 13.20 % *** 3.046712e-36 buffers\\buffer-write.js millions=1 type="Int16LE" buffer="fast" noAssert="true" -42.88 % *** 2.418837e-43 buffers\\buffer-write.js millions=1 type="Int16LE" buffer="slow" noAssert="false" 13.35 % *** 5.381653e-33 buffers\\buffer-write.js millions=1 type="Int16LE" buffer="slow" noAssert="true" -43.64 % *** 2.124825e-56 buffers\\buffer-write.js millions=1 type="Int32BE" buffer="fast" noAssert="false" 0.68 % 1.443934e-01 buffers\\buffer-write.js millions=1 type="Int32BE" buffer="fast" noAssert="true" -39.90 % *** 7.142140e-40 buffers\\buffer-write.js millions=1 type="Int32BE" buffer="slow" noAssert="false" 1.64 % *** 2.493676e-06 buffers\\buffer-write.js millions=1 type="Int32BE" buffer="slow" noAssert="true" -40.22 % *** 5.057077e-47 buffers\\buffer-write.js millions=1 type="Int32LE" buffer="fast" noAssert="false" 2.51 % *** 4.209786e-08 buffers\\buffer-write.js millions=1 type="Int32LE" buffer="fast" noAssert="true" -44.77 % *** 7.731343e-32 buffers\\buffer-write.js millions=1 type="Int32LE" buffer="slow" noAssert="false" 1.90 % *** 6.013827e-09 buffers\\buffer-write.js millions=1 type="Int32LE" buffer="slow" noAssert="true" -44.69 % *** 1.473504e-38 buffers\\buffer-write.js millions=1 type="Int8" buffer="fast" noAssert="false" 8.96 % *** 1.390186e-25 buffers\\buffer-write.js millions=1 type="Int8" buffer="fast" noAssert="true" -43.46 % *** 6.151087e-60 buffers\\buffer-write.js millions=1 type="Int8" buffer="slow" noAssert="false" 8.77 % *** 3.912871e-31 buffers\\buffer-write.js millions=1 type="Int8" buffer="slow" noAssert="true" -42.49 % *** 4.625293e-20 buffers\\buffer-write.js millions=1 type="UInt16BE" buffer="fast" noAssert="false" 15.93 % *** 1.920343e-40 buffers\\buffer-write.js millions=1 type="UInt16BE" buffer="fast" noAssert="true" -37.95 % *** 2.985032e-28 buffers\\buffer-write.js millions=1 type="UInt16BE" buffer="slow" noAssert="false" 15.93 % *** 1.402500e-43 buffers\\buffer-write.js millions=1 type="UInt16BE" buffer="slow" noAssert="true" -38.79 % *** 1.025692e-57 buffers\\buffer-write.js millions=1 type="UInt16LE" buffer="fast" noAssert="false" 12.50 % *** 2.898478e-33 buffers\\buffer-write.js millions=1 type="UInt16LE" buffer="fast" noAssert="true" -43.70 % *** 2.854414e-55 buffers\\buffer-write.js millions=1 type="UInt16LE" buffer="slow" noAssert="false" 12.86 % *** 6.317302e-42 buffers\\buffer-write.js millions=1 type="UInt16LE" buffer="slow" noAssert="true" -43.15 % *** 4.572356e-42 buffers\\buffer-write.js millions=1 type="UInt32BE" buffer="fast" noAssert="false" 5.89 % *** 1.182524e-25 buffers\\buffer-write.js millions=1 type="UInt32BE" buffer="fast" noAssert="true" -40.05 % *** 1.608055e-52 buffers\\buffer-write.js millions=1 type="UInt32BE" buffer="slow" noAssert="false" 5.68 % *** 2.005348e-24 buffers\\buffer-write.js millions=1 type="UInt32BE" buffer="slow" noAssert="true" -40.09 % *** 2.130559e-44 buffers\\buffer-write.js millions=1 type="UInt32LE" buffer="fast" noAssert="false" 5.20 % *** 3.130693e-19 buffers\\buffer-write.js millions=1 type="UInt32LE" buffer="fast" noAssert="true" -40.95 % *** 4.726284e-60 buffers\\buffer-write.js millions=1 type="UInt32LE" buffer="slow" noAssert="false" 5.93 % *** 2.668763e-20 buffers\\buffer-write.js millions=1 type="UInt32LE" buffer="slow" noAssert="true" -40.30 % *** 1.091369e-32 buffers\\buffer-write.js millions=1 type="UInt8" buffer="fast" noAssert="false" 8.60 % *** 2.492144e-29 buffers\\buffer-write.js millions=1 type="UInt8" buffer="fast" noAssert="true" -41.73 % *** 1.405204e-31 buffers\\buffer-write.js millions=1 type="UInt8" buffer="slow" noAssert="false" 9.32 % *** 4.601417e-22 buffers\\buffer-write.js millions=1 type="UInt8" buffer="slow" noAssert="true" -42.55 % *** 2.019819e-31 buffers\\buffer_zero.js type="buffer" n=1024 2.44 % *** 3.511559e-04 buffers\\buffer_zero.js type="string" n=1024 8.90 % *** 1.325879e-13 buffers\\dataview-set.js millions=1 type="Float32BE" -4.65 % *** 1.682569e-11 buffers\\dataview-set.js millions=1 type="Float32LE" -6.15 % *** 1.081206e-21 buffers\\dataview-set.js millions=1 type="Float64BE" -6.72 % *** 5.129692e-21 buffers\\dataview-set.js millions=1 type="Float64LE" -7.83 % *** 4.473849e-17 buffers\\dataview-set.js millions=1 type="Int16BE" -4.64 % ** 1.451298e-03 buffers\\dataview-set.js millions=1 type="Int16LE" -3.09 % *** 4.174781e-04 buffers\\dataview-set.js millions=1 type="Int32BE" -3.69 % ** 1.222692e-03 buffers\\dataview-set.js millions=1 type="Int32LE" -5.41 % *** 6.345715e-07 buffers\\dataview-set.js millions=1 type="Int8" -6.33 % *** 1.863074e-07 buffers\\dataview-set.js millions=1 type="Uint16BE" -7.71 % *** 4.916663e-08 buffers\\dataview-set.js millions=1 type="Uint16LE" -9.33 % *** 2.014695e-15 buffers\\dataview-set.js millions=1 type="Uint32BE" 29.27 % *** 6.652924e-54 buffers\\dataview-set.js millions=1 type="Uint32LE" 33.39 % *** 8.781109e-55 buffers\\dataview-set.js millions=1 type="Uint8" -4.19 % *** 2.561106e-04 ```
buffer-swap.js with --set n=1e6 ``` improvement confidence p.value buffers\\buffer-swap.js n=1000000 len=1024 method="swap16" aligned="false" 0.36 % *** 6.076393e-18 buffers\\buffer-swap.js n=1000000 len=1024 method="swap16" aligned="true" 1.10 % *** 1.359542e-22 buffers\\buffer-swap.js n=1000000 len=1024 method="swap32" aligned="false" 0.07 % 1.796922e-01 buffers\\buffer-swap.js n=1000000 len=1024 method="swap32" aligned="true" 0.22 % * 1.744881e-02 buffers\\buffer-swap.js n=1000000 len=1024 method="swap64" aligned="false" 0.24 % *** 1.566726e-07 buffers\\buffer-swap.js n=1000000 len=1024 method="swap64" aligned="true" -0.04 % 7.858086e-01 buffers\\buffer-swap.js n=1000000 len=128 method="swap16" aligned="false" 1.96 % *** 2.119761e-08 buffers\\buffer-swap.js n=1000000 len=128 method="swap16" aligned="true" 3.60 % *** 8.102858e-24 buffers\\buffer-swap.js n=1000000 len=128 method="swap32" aligned="false" -25.83 % *** 2.334289e-88 buffers\\buffer-swap.js n=1000000 len=128 method="swap32" aligned="true" -28.18 % *** 9.633524e-92 buffers\\buffer-swap.js n=1000000 len=128 method="swap64" aligned="false" -32.50 % *** 2.203248e-71 buffers\\buffer-swap.js n=1000000 len=128 method="swap64" aligned="true" -29.72 % *** 5.921971e-96 buffers\\buffer-swap.js n=1000000 len=1536 method="swap16" aligned="false" 0.21 % *** 2.326170e-04 buffers\\buffer-swap.js n=1000000 len=1536 method="swap16" aligned="true" 0.92 % *** 2.883013e-20 buffers\\buffer-swap.js n=1000000 len=1536 method="swap32" aligned="false" 0.10 % *** 8.005634e-06 buffers\\buffer-swap.js n=1000000 len=1536 method="swap32" aligned="true" 0.14 % 7.896609e-02 buffers\\buffer-swap.js n=1000000 len=1536 method="swap64" aligned="false" 0.09 % 9.037307e-02 buffers\\buffer-swap.js n=1000000 len=1536 method="swap64" aligned="true" 0.21 % 3.514098e-01 buffers\\buffer-swap.js n=1000000 len=2056 method="swap16" aligned="false" 0.17 % *** 3.248787e-04 buffers\\buffer-swap.js n=1000000 len=2056 method="swap16" aligned="true" 0.55 % *** 1.625691e-10 buffers\\buffer-swap.js n=1000000 len=2056 method="swap32" aligned="false" 0.02 % 1.648908e-01 buffers\\buffer-swap.js n=1000000 len=2056 method="swap32" aligned="true" 0.13 % * 3.592004e-02 buffers\\buffer-swap.js n=1000000 len=2056 method="swap64" aligned="false" -0.08 % 1.680445e-01 buffers\\buffer-swap.js n=1000000 len=2056 method="swap64" aligned="true" 0.13 % 8.412957e-02 buffers\\buffer-swap.js n=1000000 len=256 method="swap16" aligned="false" 1.14 % *** 2.298617e-15 buffers\\buffer-swap.js n=1000000 len=256 method="swap16" aligned="true" 2.35 % *** 8.848386e-23 buffers\\buffer-swap.js n=1000000 len=256 method="swap32" aligned="false" 0.51 % * 2.855728e-02 buffers\\buffer-swap.js n=1000000 len=256 method="swap32" aligned="true" 0.31 % * 4.837458e-02 buffers\\buffer-swap.js n=1000000 len=256 method="swap64" aligned="false" 0.70 % *** 1.187119e-10 buffers\\buffer-swap.js n=1000000 len=256 method="swap64" aligned="true" 0.03 % 8.377633e-01 buffers\\buffer-swap.js n=1000000 len=4096 method="swap16" aligned="false" 0.03 % 2.168347e-01 buffers\\buffer-swap.js n=1000000 len=4096 method="swap16" aligned="true" 0.27 % *** 5.990335e-08 buffers\\buffer-swap.js n=1000000 len=4096 method="swap32" aligned="false" 0.03 % 3.267018e-01 buffers\\buffer-swap.js n=1000000 len=4096 method="swap32" aligned="true" -0.05 % 7.015377e-01 buffers\\buffer-swap.js n=1000000 len=4096 method="swap64" aligned="false" -0.23 % 1.504769e-01 buffers\\buffer-swap.js n=1000000 len=4096 method="swap64" aligned="true" -0.18 % 7.870197e-02 buffers\\buffer-swap.js n=1000000 len=512 method="swap16" aligned="false" 0.57 % *** 4.245723e-15 buffers\\buffer-swap.js n=1000000 len=512 method="swap16" aligned="true" 1.80 % *** 3.992138e-20 buffers\\buffer-swap.js n=1000000 len=512 method="swap32" aligned="false" 0.35 % *** 6.259493e-09 buffers\\buffer-swap.js n=1000000 len=512 method="swap32" aligned="true" 0.42 % ** 1.212643e-03 buffers\\buffer-swap.js n=1000000 len=512 method="swap64" aligned="false" 0.52 % *** 2.336598e-16 buffers\\buffer-swap.js n=1000000 len=512 method="swap64" aligned="true" -0.04 % 7.897691e-01 buffers\\buffer-swap.js n=1000000 len=64 method="swap16" aligned="false" -11.63 % *** 1.715831e-70 buffers\\buffer-swap.js n=1000000 len=64 method="swap16" aligned="true" -11.28 % *** 2.934296e-46 buffers\\buffer-swap.js n=1000000 len=64 method="swap32" aligned="false" -22.73 % *** 6.453671e-79 buffers\\buffer-swap.js n=1000000 len=64 method="swap32" aligned="true" -23.37 % *** 3.179763e-71 buffers\\buffer-swap.js n=1000000 len=64 method="swap64" aligned="false" -26.91 % *** 1.133643e-31 buffers\\buffer-swap.js n=1000000 len=64 method="swap64" aligned="true" -24.71 % *** 1.203672e-29 buffers\\buffer-swap.js n=1000000 len=768 method="swap16" aligned="false" 0.38 % *** 5.071203e-12 buffers\\buffer-swap.js n=1000000 len=768 method="swap16" aligned="true" 1.18 % *** 2.312994e-23 buffers\\buffer-swap.js n=1000000 len=768 method="swap32" aligned="false" 0.17 % ** 2.755085e-03 buffers\\buffer-swap.js n=1000000 len=768 method="swap32" aligned="true" 0.13 % 3.430058e-01 buffers\\buffer-swap.js n=1000000 len=768 method="swap64" aligned="false" 0.44 % *** 4.743284e-04 buffers\\buffer-swap.js n=1000000 len=768 method="swap64" aligned="true" -0.03 % 8.388090e-01 buffers\\buffer-swap.js n=1000000 len=8 method="swap16" aligned="false" 6.06 % *** 2.951182e-30 buffers\\buffer-swap.js n=1000000 len=8 method="swap16" aligned="true" 5.74 % *** 3.316930e-21 buffers\\buffer-swap.js n=1000000 len=8 method="swap32" aligned="false" 3.50 % *** 1.244331e-22 buffers\\buffer-swap.js n=1000000 len=8 method="swap32" aligned="true" 1.72 % *** 1.879290e-11 buffers\\buffer-swap.js n=1000000 len=8 method="swap64" aligned="false" 0.68 % * 3.477764e-02 buffers\\buffer-swap.js n=1000000 len=8 method="swap64" aligned="true" 0.10 % 8.185927e-01 buffers\\buffer-swap.js n=1000000 len=8192 method="swap16" aligned="false" 0.02 % 1.425613e-01 buffers\\buffer-swap.js n=1000000 len=8192 method="swap16" aligned="true" 0.18 % *** 1.916646e-08 buffers\\buffer-swap.js n=1000000 len=8192 method="swap32" aligned="false" -0.02 % 2.420096e-01 buffers\\buffer-swap.js n=1000000 len=8192 method="swap32" aligned="true" 0.11 % * 2.388254e-02 buffers\\buffer-swap.js n=1000000 len=8192 method="swap64" aligned="false" -0.17 % ** 3.838764e-03 buffers\\buffer-swap.js n=1000000 len=8192 method="swap64" aligned="true" 0.02 % 6.347701e-01 ```
child_process ``` improvement confidence p.value child_process\\child-process-exec-stdout.js dur=5 len=1024 -0.90 % 4.373815e-01 child_process\\child-process-exec-stdout.js dur=5 len=256 0.23 % 8.935467e-01 child_process\\child-process-exec-stdout.js dur=5 len=4096 0.62 % 6.591330e-01 child_process\\child-process-exec-stdout.js dur=5 len=64 -1.87 % 3.482599e-01 child_process\\child-process-params.js params=1 methodName="exec" n=1000 -4.63 % *** 5.123714e-11 child_process\\child-process-params.js params=1 methodName="execFile" n=1000 -3.92 % *** 2.644723e-12 child_process\\child-process-params.js params=1 methodName="execFileSync" n=1000 -0.28 % 7.107140e-01 child_process\\child-process-params.js params=1 methodName="execSync" n=1000 -0.21 % 4.051633e-01 child_process\\child-process-params.js params=1 methodName="spawn" n=1000 -4.01 % *** 1.536730e-14 child_process\\child-process-params.js params=1 methodName="spawnSync" n=1000 -0.22 % 7.796821e-01 child_process\\child-process-params.js params=2 methodName="exec" n=1000 -4.42 % *** 5.623094e-16 child_process\\child-process-params.js params=2 methodName="execFile" n=1000 -3.40 % *** 1.986012e-09 child_process\\child-process-params.js params=2 methodName="execFileSync" n=1000 0.07 % 9.104965e-01 child_process\\child-process-params.js params=2 methodName="execSync" n=1000 -0.09 % 4.823520e-01 child_process\\child-process-params.js params=2 methodName="spawn" n=1000 -3.98 % *** 7.050357e-13 child_process\\child-process-params.js params=2 methodName="spawnSync" n=1000 1.04 % 2.596032e-01 child_process\\child-process-params.js params=3 methodName="exec" n=1000 -5.15 % *** 4.912272e-15 child_process\\child-process-params.js params=3 methodName="execFile" n=1000 -4.78 % *** 2.814372e-17 child_process\\child-process-params.js params=3 methodName="execFileSync" n=1000 0.06 % 9.181210e-01 child_process\\child-process-params.js params=3 methodName="spawn" n=1000 -3.86 % *** 1.507486e-10 child_process\\child-process-params.js params=3 methodName="spawnSync" n=1000 1.02 % 2.644717e-01 child_process\\child-process-params.js params=4 methodName="execFile" n=1000 -3.90 % *** 7.927832e-17 child_process\\child-process-read-ipc.js dur=5 len=1024 -0.02 % 9.396622e-01 child_process\\child-process-read-ipc.js dur=5 len=1048576 1.03 % * 3.282735e-02 child_process\\child-process-read-ipc.js dur=5 len=16384 -0.27 % *** 5.423084e-04 child_process\\child-process-read-ipc.js dur=5 len=16777216 0.26 % 2.500390e-01 child_process\\child-process-read-ipc.js dur=5 len=256 -0.70 % *** 7.789173e-04 child_process\\child-process-read-ipc.js dur=5 len=4096 -0.21 % 9.370554e-02 child_process\\child-process-read-ipc.js dur=5 len=64 -0.68 % ** 2.257675e-03 child_process\\child-process-read-ipc.js dur=5 len=65536 0.91 % *** 3.971267e-04 child_process\\child-process-read.js dur=5 len=1024 0.83 % ** 1.021766e-03 child_process\\child-process-read.js dur=5 len=256 -1.70 % 4.431098e-01 child_process\\child-process-read.js dur=5 len=4096 -0.54 % 5.921539e-01 child_process\\child-process-read.js dur=5 len=64 0.84 % *** 6.748565e-05 child_process\\spawn-echo.js thousands=1 -0.68 % 3.306275e-01 ```
domain ``` improvement confidence p.value domain\\domain-fn-args.js n=10 arguments=0 -5.22 % 0.13903860 domain\\domain-fn-args.js n=10 arguments=1 -2.80 % 0.12515340 domain\\domain-fn-args.js n=10 arguments=2 -4.77 % * 0.01492218 domain\\domain-fn-args.js n=10 arguments=3 -4.34 % ** 0.00841915 ```
es ``` improvement confidence p.value es\\defaultparams-bench.js millions=100 method="withdefaults" 186.76 % *** 2.057441e-50 es\\defaultparams-bench.js millions=100 method="withoutdefaults" 187.46 % *** 1.148147e-66 es\\destructuring-bench.js millions=100 method="destructure" 58.76 % *** 3.980102e-67 es\\destructuring-bench.js millions=100 method="swap" -73.19 % *** 2.054673e-67 es\\destructuring-object-bench.js millions=100 method="destructureObject" 45.92 % *** 3.253867e-84 es\\destructuring-object-bench.js millions=100 method="normal" -2.25 % *** 1.426450e-24 es\\map-bench.js millions=1 method="fakeMap" -0.54 % 8.154590e-02 es\\map-bench.js millions=1 method="map" -1.98 % *** 4.223953e-12 es\\map-bench.js millions=1 method="nullProtoObject" -9.73 % *** 2.357791e-35 es\\map-bench.js millions=1 method="object" -6.76 % *** 2.362004e-27 es\\restparams-bench.js millions=100 method="arguments" -9.20 % *** 7.682132e-16 es\\restparams-bench.js millions=100 method="copy" -23.35 % *** 7.057908e-56 es\\restparams-bench.js millions=100 method="rest" 303.00 % *** 8.692510e-87 es\\spread-bench.js millions=5 rest=0 context="context" count=10 method="apply" 6.25 % *** 2.747691e-37 es\\spread-bench.js millions=5 rest=0 context="context" count=10 method="call-spread" 4.22 % *** 1.238224e-33 es\\spread-bench.js millions=5 rest=0 context="context" count=10 method="spread" 5.66 % *** 1.230090e-19 es\\spread-bench.js millions=5 rest=0 context="context" count=20 method="apply" 4.22 % *** 9.667833e-21 es\\spread-bench.js millions=5 rest=0 context="context" count=20 method="call-spread" 3.61 % *** 2.641823e-15 es\\spread-bench.js millions=5 rest=0 context="context" count=20 method="spread" 3.95 % *** 1.124106e-25 es\\spread-bench.js millions=5 rest=0 context="context" count=5 method="apply" 7.54 % *** 2.061487e-11 es\\spread-bench.js millions=5 rest=0 context="context" count=5 method="call-spread" 7.91 % *** 2.713476e-19 es\\spread-bench.js millions=5 rest=0 context="context" count=5 method="spread" 8.16 % *** 2.198573e-14 es\\spread-bench.js millions=5 rest=0 context="null" count=10 method="apply" 5.37 % *** 6.674710e-23 es\\spread-bench.js millions=5 rest=0 context="null" count=10 method="call-spread" 4.07 % *** 5.798976e-38 es\\spread-bench.js millions=5 rest=0 context="null" count=10 method="spread" 6.06 % *** 2.881326e-22 es\\spread-bench.js millions=5 rest=0 context="null" count=20 method="apply" 4.40 % *** 9.221114e-39 es\\spread-bench.js millions=5 rest=0 context="null" count=20 method="call-spread" 3.29 % *** 1.949925e-19 es\\spread-bench.js millions=5 rest=0 context="null" count=20 method="spread" 4.23 % *** 6.953280e-25 es\\spread-bench.js millions=5 rest=0 context="null" count=5 method="apply" 8.92 % *** 5.443435e-15 es\\spread-bench.js millions=5 rest=0 context="null" count=5 method="call-spread" 6.58 % *** 1.196305e-14 es\\spread-bench.js millions=5 rest=0 context="null" count=5 method="spread" 7.35 % *** 1.602696e-12 es\\spread-bench.js millions=5 rest=1 context="context" count=10 method="apply" 40.98 % *** 1.500746e-56 es\\spread-bench.js millions=5 rest=1 context="context" count=10 method="call-spread" 27.83 % *** 2.708692e-84 es\\spread-bench.js millions=5 rest=1 context="context" count=10 method="spread" 36.68 % *** 9.473065e-70 es\\spread-bench.js millions=5 rest=1 context="context" count=20 method="apply" 31.29 % *** 9.726107e-80 es\\spread-bench.js millions=5 rest=1 context="context" count=20 method="call-spread" 19.57 % *** 2.758893e-73 es\\spread-bench.js millions=5 rest=1 context="context" count=20 method="spread" 26.39 % *** 8.597381e-55 es\\spread-bench.js millions=5 rest=1 context="context" count=5 method="apply" 53.11 % *** 4.678357e-80 es\\spread-bench.js millions=5 rest=1 context="context" count=5 method="call-spread" 38.85 % *** 5.448252e-79 es\\spread-bench.js millions=5 rest=1 context="context" count=5 method="spread" 48.35 % *** 1.633168e-59 es\\spread-bench.js millions=5 rest=1 context="null" count=10 method="apply" 40.47 % *** 2.991328e-42 es\\spread-bench.js millions=5 rest=1 context="null" count=10 method="call-spread" 27.92 % *** 1.178384e-67 es\\spread-bench.js millions=5 rest=1 context="null" count=10 method="spread" 38.78 % *** 2.025877e-51 es\\spread-bench.js millions=5 rest=1 context="null" count=20 method="apply" 31.04 % *** 1.404906e-83 es\\spread-bench.js millions=5 rest=1 context="null" count=20 method="call-spread" 19.52 % *** 2.329415e-75 es\\spread-bench.js millions=5 rest=1 context="null" count=20 method="spread" 27.37 % *** 1.218005e-65 es\\spread-bench.js millions=5 rest=1 context="null" count=5 method="apply" 51.95 % *** 2.989997e-47 es\\spread-bench.js millions=5 rest=1 context="null" count=5 method="call-spread" 38.73 % *** 9.373389e-50 es\\spread-bench.js millions=5 rest=1 context="null" count=5 method="spread" 51.66 % *** 3.193677e-48 ```
new es/foreach-bench.js ``` improvement confidence p.value es\\foreach-bench.js millions=5 count=10 method="for-in" 1.36 % *** 1.074313e-05 es\\foreach-bench.js millions=5 count=10 method="for-of" 0.70 % *** 4.396489e-04 es\\foreach-bench.js millions=5 count=10 method="for" 5.31 % *** 2.817524e-26 es\\foreach-bench.js millions=5 count=10 method="forEach" 6.71 % *** 6.956617e-23 es\\foreach-bench.js millions=5 count=100 method="for-in" -2.48 % *** 1.222102e-12 es\\foreach-bench.js millions=5 count=100 method="for-of" 1.85 % *** 1.263492e-11 es\\foreach-bench.js millions=5 count=100 method="for" 21.90 % *** 1.471960e-44 es\\foreach-bench.js millions=5 count=100 method="forEach" -5.37 % *** 6.729070e-24 es\\foreach-bench.js millions=5 count=20 method="for-in" -1.60 % *** 1.931362e-07 es\\foreach-bench.js millions=5 count=20 method="for-of" 1.13 % *** 1.624073e-06 es\\foreach-bench.js millions=5 count=20 method="for" 12.95 % *** 7.255962e-58 es\\foreach-bench.js millions=5 count=20 method="forEach" 0.84 % *** 6.306995e-04 es\\foreach-bench.js millions=5 count=5 method="for-in" 2.90 % *** 2.485570e-13 es\\foreach-bench.js millions=5 count=5 method="for-of" -0.14 % 5.990183e-01 es\\foreach-bench.js millions=5 count=5 method="for" -3.16 % *** 1.395389e-07 es\\foreach-bench.js millions=5 count=5 method="forEach" 17.81 % *** 5.034140e-57 ```
events ``` improvement confidence p.value events\\ee-add-remove.js n=250000 -45.96 % *** 9.772078e-70 events\\ee-emit-multi-args.js n=2000000 -37.43 % *** 1.653690e-47 events\\ee-emit.js n=2000000 -42.67 % *** 1.317334e-47 events\\ee-listener-count-on-prototype.js n=50000000 120.82 % *** 3.881793e-63 events\\ee-listeners-many.js n=5000000 22.51 % *** 7.230026e-65 events\\ee-listeners.js n=5000000 12.49 % *** 5.530568e-39 events\\ee-once.js n=20000000 -17.92 % *** 3.652062e-28 ```
http The most long `http` benchmarks was a little shortened: `check_is_http_token.js` was launched with `set n=5e7` instead of `5e8` and `simple.js` was launched with `--runs 15` instead of `30`. ``` improvement confidence p.value http\\bench-parser.js n=100000 fields=16 -4.37 % *** 3.569241e-28 http\\bench-parser.js n=100000 fields=32 -3.46 % * 1.656215e-02 http\\bench-parser.js n=100000 fields=4 -11.25 % *** 1.023311e-42 http\\bench-parser.js n=100000 fields=8 -7.27 % *** 7.002934e-31 http\\check_invalid_header_char.js n=500000000 key="\177" -88.89 % *** 1.087074e-76 http\\check_invalid_header_char.js n=500000000 key="" -78.56 % *** 1.307016e-82 http\\check_invalid_header_char.js n=500000000 key="\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tFoo bar baz" -38.94 % *** 1.564267e-107 http\\check_invalid_header_char.js n=500000000 key="1" -82.84 % *** 2.208471e-91 http\\check_invalid_header_char.js n=500000000 key="20091" -80.15 % *** 3.797239e-116 http\\check_invalid_header_char.js n=500000000 key="close" -80.14 % *** 1.631525e-142 http\\check_invalid_header_char.js n=500000000 key="en-US" -80.17 % *** 3.793769e-80 http\\check_invalid_header_char.js n=500000000 key="foo\\nbar" -91.21 % *** 7.622870e-154 http\\check_invalid_header_char.js n=500000000 key="gzip" -86.58 % *** 7.193320e-79 http\\check_invalid_header_char.js n=500000000 key="Here is a value..." -27.15 % *** 6.119973e-45 http\\check_invalid_header_char.js n=500000000 key="keep-alive" -54.69 % *** 2.247444e-66 http\\check_invalid_header_char.js n=500000000 key="private" -66.71 % *** 2.391885e-86 http\\check_invalid_header_char.js n=500000000 key="SAMEORIGIN" -54.73 % *** 4.635725e-76 http\\check_invalid_header_char.js n=500000000 key="Sat, 07 May 2016 16:54:48 GMT" -33.52 % *** 1.358258e-82 http\\check_invalid_header_char.js n=500000000 key="text/html; charset=utf-8" -36.93 % *** 1.107974e-47 http\\check_invalid_header_char.js n=500000000 key="text/plain" -54.66 % *** 8.837458e-56 http\\check_invalid_header_char.js n=500000000 key="中文呢" -34.59 % *** 3.093828e-52 http\\check_is_http_token.js n=50000000 key="((((())))" -80.63 % *** 2.506936e-60 http\\check_is_http_token.js n=50000000 key=":" -80.65 % *** 1.934004e-87 http\\check_is_http_token.js n=50000000 key=":alternate-protocol" -84.86 % *** 1.537442e-60 http\\check_is_http_token.js n=50000000 key="@@" -80.56 % *** 3.816927e-52 http\\check_is_http_token.js n=50000000 key="Accept-Ranges" -50.52 % *** 1.374950e-83 http\\check_is_http_token.js n=50000000 key="alt-svc" -59.64 % *** 1.257471e-71 http\\check_is_http_token.js n=50000000 key="alternate-protocol" -45.46 % *** 5.911024e-63 http\\check_is_http_token.js n=50000000 key="alternate-protocol:" -41.62 % *** 2.682686e-53 http\\check_is_http_token.js n=50000000 key="Cache-Control" -50.74 % *** 1.960734e-90 http\\check_is_http_token.js n=50000000 key="Connection" -47.90 % *** 8.006204e-63 http\\check_is_http_token.js n=50000000 key="Content-Encoding" -47.17 % *** 5.423750e-83 http\\check_is_http_token.js n=50000000 key="content-length" -49.73 % *** 1.641712e-59 http\\check_is_http_token.js n=50000000 key="Content-Location" -47.06 % *** 6.244804e-71 http\\check_is_http_token.js n=50000000 key="content-type" -43.33 % *** 7.090822e-71 http\\check_is_http_token.js n=50000000 key="Content-Type" -43.09 % *** 2.151129e-81 http\\check_is_http_token.js n=50000000 key="date" -81.51 % *** 1.778910e-73 http\\check_is_http_token.js n=50000000 key="ETag" -81.50 % *** 1.212925e-76 http\\check_is_http_token.js n=50000000 key="Expires" -59.18 % *** 1.485951e-74 http\\check_is_http_token.js n=50000000 key="Keep-Alive" -48.43 % *** 1.040756e-46 http\\check_is_http_token.js n=50000000 key="Last-Modified" -51.02 % *** 3.781236e-60 http\\check_is_http_token.js n=50000000 key="location" -55.80 % *** 5.556102e-64 http\\check_is_http_token.js n=50000000 key="server" -66.11 % *** 1.714344e-66 http\\check_is_http_token.js n=50000000 key="Server" -66.24 % *** 1.778495e-73 http\\check_is_http_token.js n=50000000 key="status" -66.81 % *** 1.687298e-60 http\\check_is_http_token.js n=50000000 key="TCN" -79.83 % *** 1.301879e-98 http\\check_is_http_token.js n=50000000 key="Transfer-Encoding" -46.97 % *** 2.318722e-45 http\\check_is_http_token.js n=50000000 key="Vary" -81.36 % *** 4.002107e-62 http\\check_is_http_token.js n=50000000 key="version" -59.34 % *** 6.095173e-76 http\\check_is_http_token.js n=50000000 key="x-frame-options" -48.38 % *** 2.059074e-70 http\\check_is_http_token.js n=50000000 key="x-xss-protection" -47.35 % *** 5.648471e-81 http\\check_is_http_token.js n=50000000 key="中文呢" -19.31 % *** 2.692170e-52 http\\chunked.js c=100 size=1 num=1 benchmarker="autocannon" -3.55 % *** 1.177415e-18 http\\chunked.js c=100 size=1 num=16 benchmarker="autocannon" -3.60 % *** 1.004363e-11 http\\chunked.js c=100 size=1 num=4 benchmarker="autocannon" -3.92 % *** 1.605936e-16 http\\chunked.js c=100 size=1 num=8 benchmarker="autocannon" -2.09 % *** 2.829203e-06 http\\chunked.js c=100 size=256 num=1 benchmarker="autocannon" -3.04 % *** 1.866999e-10 http\\chunked.js c=100 size=256 num=16 benchmarker="autocannon" -3.21 % *** 1.381201e-09 http\\chunked.js c=100 size=256 num=4 benchmarker="autocannon" -3.28 % *** 2.463133e-12 http\\chunked.js c=100 size=256 num=8 benchmarker="autocannon" -1.72 % *** 1.776643e-05 http\\chunked.js c=100 size=64 num=1 benchmarker="autocannon" -3.03 % *** 4.151764e-12 http\\chunked.js c=100 size=64 num=16 benchmarker="autocannon" -2.08 % *** 4.864422e-06 http\\chunked.js c=100 size=64 num=4 benchmarker="autocannon" -2.22 % *** 3.388990e-08 http\\chunked.js c=100 size=64 num=8 benchmarker="autocannon" -2.72 % *** 2.561185e-07 http\\client-request-body.js method="end" bytes=1024 type="asc" dur=5 -7.01 % *** 4.134339e-31 http\\client-request-body.js method="end" bytes=1024 type="buf" dur=5 -7.91 % *** 3.154750e-34 http\\client-request-body.js method="end" bytes=1024 type="utf" dur=5 -6.49 % *** 1.395121e-24 http\\client-request-body.js method="end" bytes=256 type="asc" dur=5 -6.90 % *** 2.348893e-33 http\\client-request-body.js method="end" bytes=256 type="buf" dur=5 -7.20 % *** 8.542280e-32 http\\client-request-body.js method="end" bytes=256 type="utf" dur=5 -7.13 % *** 9.335939e-36 http\\client-request-body.js method="end" bytes=32 type="asc" dur=5 -7.08 % *** 7.227582e-30 http\\client-request-body.js method="end" bytes=32 type="buf" dur=5 -7.25 % *** 6.532999e-35 http\\client-request-body.js method="end" bytes=32 type="utf" dur=5 -7.53 % *** 5.631636e-34 http\\client-request-body.js method="write" bytes=1024 type="asc" dur=5 -6.92 % *** 1.649107e-31 http\\client-request-body.js method="write" bytes=1024 type="buf" dur=5 -7.92 % *** 1.222351e-34 http\\client-request-body.js method="write" bytes=1024 type="utf" dur=5 -7.25 % *** 2.691796e-33 http\\client-request-body.js method="write" bytes=256 type="asc" dur=5 -7.01 % *** 3.714085e-32 http\\client-request-body.js method="write" bytes=256 type="buf" dur=5 -8.07 % *** 9.361541e-33 http\\client-request-body.js method="write" bytes=256 type="utf" dur=5 -7.38 % *** 2.399511e-30 http\\client-request-body.js method="write" bytes=32 type="asc" dur=5 -7.06 % *** 2.493660e-27 http\\client-request-body.js method="write" bytes=32 type="buf" dur=5 -8.08 % *** 1.307705e-30 http\\client-request-body.js method="write" bytes=32 type="utf" dur=5 -7.48 % *** 3.392244e-28 http\\cluster.js c=50 length=1024 type="buffer" benchmarker="autocannon" -4.78 % *** 3.117193e-07 http\\cluster.js c=50 length=1024 type="bytes" benchmarker="autocannon" -6.35 % *** 1.130824e-12 http\\cluster.js c=50 length=102400 type="buffer" benchmarker="autocannon" -5.82 % *** 1.821486e-07 http\\cluster.js c=50 length=102400 type="bytes" benchmarker="autocannon" -11.54 % *** 3.221650e-29 http\\cluster.js c=50 length=4 type="buffer" benchmarker="autocannon" -4.55 % *** 2.637825e-07 http\\cluster.js c=50 length=4 type="bytes" benchmarker="autocannon" -6.25 % *** 3.777872e-12 http\\cluster.js c=500 length=1024 type="buffer" benchmarker="autocannon" -5.03 % *** 1.108270e-10 http\\cluster.js c=500 length=1024 type="bytes" benchmarker="autocannon" -6.29 % *** 1.814635e-13 http\\cluster.js c=500 length=102400 type="buffer" benchmarker="autocannon" -5.29 % *** 4.350849e-05 http\\cluster.js c=500 length=102400 type="bytes" benchmarker="autocannon" -8.68 % *** 1.560928e-10 http\\cluster.js c=500 length=4 type="buffer" benchmarker="autocannon" -5.13 % *** 2.788204e-14 http\\cluster.js c=500 length=4 type="bytes" benchmarker="autocannon" -5.64 % *** 8.692756e-14 http\\create-clientrequest.js n=1000000 pathlen=1 1.76 % ** 6.565825e-03 http\\create-clientrequest.js n=1000000 pathlen=128 6.56 % *** 6.132681e-15 http\\create-clientrequest.js n=1000000 pathlen=16 10.93 % *** 1.240467e-23 http\\create-clientrequest.js n=1000000 pathlen=32 8.79 % *** 5.796884e-14 http\\create-clientrequest.js n=1000000 pathlen=64 6.54 % *** 4.556245e-22 http\\create-clientrequest.js n=1000000 pathlen=8 10.73 % *** 3.209776e-21 http\\end-vs-write-end.js method="end" c=100 kb=1024 type="asc" benchmarker="autocannon" 0.75 % 5.069610e-01 http\\end-vs-write-end.js method="end" c=100 kb=1024 type="buf" benchmarker="autocannon" -2.02 % ** 9.983234e-03 http\\end-vs-write-end.js method="end" c=100 kb=1024 type="utf" benchmarker="autocannon" 1.09 % 3.372412e-01 http\\end-vs-write-end.js method="end" c=100 kb=128 type="asc" benchmarker="autocannon" -10.09 % *** 7.552131e-18 http\\end-vs-write-end.js method="end" c=100 kb=128 type="buf" benchmarker="autocannon" -1.92 % * 3.740466e-02 http\\end-vs-write-end.js method="end" c=100 kb=128 type="utf" benchmarker="autocannon" -8.95 % *** 1.480997e-16 http\\end-vs-write-end.js method="end" c=100 kb=256 type="asc" benchmarker="autocannon" -4.08 % *** 1.377526e-06 http\\end-vs-write-end.js method="end" c=100 kb=256 type="buf" benchmarker="autocannon" 0.12 % 9.113114e-01 http\\end-vs-write-end.js method="end" c=100 kb=256 type="utf" benchmarker="autocannon" -3.19 % *** 1.029744e-05 http\\end-vs-write-end.js method="end" c=100 kb=64 type="asc" benchmarker="autocannon" -16.43 % *** 3.308102e-21 http\\end-vs-write-end.js method="end" c=100 kb=64 type="buf" benchmarker="autocannon" -1.25 % 1.566492e-01 http\\end-vs-write-end.js method="end" c=100 kb=64 type="utf" benchmarker="autocannon" -8.49 % *** 1.176542e-10 http\\end-vs-write-end.js method="write" c=100 kb=1024 type="asc" benchmarker="autocannon" -0.12 % 9.341455e-01 http\\end-vs-write-end.js method="write" c=100 kb=1024 type="buf" benchmarker="autocannon" 0.16 % 7.890450e-01 http\\end-vs-write-end.js method="write" c=100 kb=1024 type="utf" benchmarker="autocannon" -0.52 % 5.004981e-01 http\\end-vs-write-end.js method="write" c=100 kb=128 type="asc" benchmarker="autocannon" -11.05 % *** 1.926600e-16 http\\end-vs-write-end.js method="write" c=100 kb=128 type="buf" benchmarker="autocannon" -6.46 % *** 3.579947e-08 http\\end-vs-write-end.js method="write" c=100 kb=128 type="utf" benchmarker="autocannon" -11.42 % *** 8.420314e-24 http\\end-vs-write-end.js method="write" c=100 kb=256 type="asc" benchmarker="autocannon" -6.61 % *** 1.701159e-08 http\\end-vs-write-end.js method="write" c=100 kb=256 type="buf" benchmarker="autocannon" -6.35 % *** 1.870454e-07 http\\end-vs-write-end.js method="write" c=100 kb=256 type="utf" benchmarker="autocannon" -5.31 % *** 2.040191e-11 http\\end-vs-write-end.js method="write" c=100 kb=64 type="asc" benchmarker="autocannon" -23.43 % *** 1.297754e-26 http\\end-vs-write-end.js method="write" c=100 kb=64 type="buf" benchmarker="autocannon" -6.51 % *** 4.032692e-11 http\\end-vs-write-end.js method="write" c=100 kb=64 type="utf" benchmarker="autocannon" -11.04 % *** 1.206863e-19 http\\http_server_for_chunky_client.js type="send" num=2000 len=1 -5.79 % *** 8.491075e-18 http\\http_server_for_chunky_client.js type="send" num=2000 len=128 -2.59 % *** 8.357146e-14 http\\http_server_for_chunky_client.js type="send" num=2000 len=16 -4.59 % *** 1.302737e-22 http\\http_server_for_chunky_client.js type="send" num=2000 len=32 -3.71 % *** 8.800441e-16 http\\http_server_for_chunky_client.js type="send" num=2000 len=4 -5.07 % *** 6.604031e-17 http\\http_server_for_chunky_client.js type="send" num=2000 len=64 -3.57 % *** 2.493372e-14 http\\http_server_for_chunky_client.js type="send" num=2000 len=8 -5.43 % *** 6.684029e-18 http\\http_server_for_chunky_client.js type="send" num=5 len=1 -10.95 % *** 7.295982e-17 http\\http_server_for_chunky_client.js type="send" num=5 len=128 -18.91 % *** 1.691256e-28 http\\http_server_for_chunky_client.js type="send" num=5 len=16 -17.17 % *** 7.613305e-20 http\\http_server_for_chunky_client.js type="send" num=5 len=32 -16.70 % *** 9.378219e-23 http\\http_server_for_chunky_client.js type="send" num=5 len=4 -20.17 % *** 2.267978e-33 http\\http_server_for_chunky_client.js type="send" num=5 len=64 -18.62 % *** 6.457991e-23 http\\http_server_for_chunky_client.js type="send" num=5 len=8 -19.49 % *** 2.003852e-18 http\\http_server_for_chunky_client.js type="send" num=50 len=1 -15.03 % *** 1.106210e-39 http\\http_server_for_chunky_client.js type="send" num=50 len=128 -12.93 % *** 1.578896e-43 http\\http_server_for_chunky_client.js type="send" num=50 len=16 -14.41 % *** 2.370400e-40 http\\http_server_for_chunky_client.js type="send" num=50 len=32 -13.41 % *** 1.407625e-40 http\\http_server_for_chunky_client.js type="send" num=50 len=4 -14.83 % *** 1.022015e-43 http\\http_server_for_chunky_client.js type="send" num=50 len=64 -13.13 % *** 3.283492e-46 http\\http_server_for_chunky_client.js type="send" num=50 len=8 -14.18 % *** 1.020625e-41 http\\http_server_for_chunky_client.js type="send" num=500 len=1 -5.87 % *** 1.111754e-06 http\\http_server_for_chunky_client.js type="send" num=500 len=128 -4.72 % *** 4.420159e-19 http\\http_server_for_chunky_client.js type="send" num=500 len=16 -5.36 % *** 2.092015e-22 http\\http_server_for_chunky_client.js type="send" num=500 len=32 -3.68 % *** 1.404249e-13 http\\http_server_for_chunky_client.js type="send" num=500 len=4 -6.57 % *** 1.223214e-16 http\\http_server_for_chunky_client.js type="send" num=500 len=64 -4.79 % *** 2.066460e-23 http\\http_server_for_chunky_client.js type="send" num=500 len=8 -4.79 % *** 1.513417e-07 http\\simple.js res="normal" c=50 chunks=0 length=1024 type="buffer" benchmarker="autocannon" -4.17 % *** 4.862845e-05 http\\simple.js res="normal" c=50 chunks=0 length=1024 type="bytes" benchmarker="autocannon" -8.43 % *** 5.454468e-07 http\\simple.js res="normal" c=50 chunks=0 length=102400 type="buffer" benchmarker="autocannon" -4.91 % ** 3.241289e-03 http\\simple.js res="normal" c=50 chunks=0 length=102400 type="bytes" benchmarker="autocannon" -25.24 % *** 7.674309e-16 http\\simple.js res="normal" c=50 chunks=0 length=4 type="buffer" benchmarker="autocannon" -4.59 % *** 8.669667e-05 http\\simple.js res="normal" c=50 chunks=0 length=4 type="bytes" benchmarker="autocannon" -6.32 % *** 1.054130e-05 http\\simple.js res="normal" c=50 chunks=1 length=1024 type="buffer" benchmarker="autocannon" -5.06 % *** 2.501442e-05 http\\simple.js res="normal" c=50 chunks=1 length=1024 type="bytes" benchmarker="autocannon" -5.65 % *** 6.339490e-05 http\\simple.js res="normal" c=50 chunks=1 length=102400 type="buffer" benchmarker="autocannon" -3.28 % * 2.691863e-02 http\\simple.js res="normal" c=50 chunks=1 length=102400 type="bytes" benchmarker="autocannon" -13.40 % *** 1.355733e-16 http\\simple.js res="normal" c=50 chunks=1 length=4 type="buffer" benchmarker="autocannon" -4.24 % *** 3.382373e-04 http\\simple.js res="normal" c=50 chunks=1 length=4 type="bytes" benchmarker="autocannon" -4.45 % *** 2.801222e-05 http\\simple.js res="normal" c=50 chunks=4 length=1024 type="buffer" benchmarker="autocannon" -4.72 % *** 3.078187e-05 http\\simple.js res="normal" c=50 chunks=4 length=1024 type="bytes" benchmarker="autocannon" -3.68 % ** 3.193511e-03 http\\simple.js res="normal" c=50 chunks=4 length=102400 type="buffer" benchmarker="autocannon" -4.79 % ** 7.796647e-03 http\\simple.js res="normal" c=50 chunks=4 length=102400 type="bytes" benchmarker="autocannon" -9.21 % *** 7.230804e-05 http\\simple.js res="normal" c=50 chunks=4 length=4 type="buffer" benchmarker="autocannon" -5.82 % *** 2.674268e-05 http\\simple.js res="normal" c=50 chunks=4 length=4 type="bytes" benchmarker="autocannon" -4.23 % *** 4.396474e-04 http\\simple.js res="normal" c=500 chunks=0 length=1024 type="buffer" benchmarker="autocannon" -6.52 % *** 1.124726e-07 http\\simple.js res="normal" c=500 chunks=0 length=1024 type="bytes" benchmarker="autocannon" -8.37 % *** 7.851841e-08 http\\simple.js res="normal" c=500 chunks=0 length=102400 type="buffer" benchmarker="autocannon" -3.67 % * 3.904036e-02 http\\simple.js res="normal" c=500 chunks=0 length=102400 type="bytes" benchmarker="autocannon" -28.70 % *** 1.658213e-18 http\\simple.js res="normal" c=500 chunks=0 length=4 type="buffer" benchmarker="autocannon" -5.55 % *** 1.105788e-06 http\\simple.js res="normal" c=500 chunks=0 length=4 type="bytes" benchmarker="autocannon" -3.46 % ** 3.664429e-03 http\\simple.js res="normal" c=500 chunks=1 length=1024 type="buffer" benchmarker="autocannon" -5.76 % *** 2.093527e-06 http\\simple.js res="normal" c=500 chunks=1 length=1024 type="bytes" benchmarker="autocannon" -4.83 % *** 5.687172e-04 http\\simple.js res="normal" c=500 chunks=1 length=102400 type="buffer" benchmarker="autocannon" -3.93 % * 1.443829e-02 http\\simple.js res="normal" c=500 chunks=1 length=102400 type="bytes" benchmarker="autocannon" -15.57 % *** 2.753559e-17 http\\simple.js res="normal" c=500 chunks=1 length=4 type="buffer" benchmarker="autocannon" -6.46 % *** 7.633596e-07 http\\simple.js res="normal" c=500 chunks=1 length=4 type="bytes" benchmarker="autocannon" -4.28 % *** 6.074356e-04 http\\simple.js res="normal" c=500 chunks=4 length=1024 type="buffer" benchmarker="autocannon" -4.10 % *** 3.614595e-04 http\\simple.js res="normal" c=500 chunks=4 length=1024 type="bytes" benchmarker="autocannon" -3.00 % ** 6.119423e-03 http\\simple.js res="normal" c=500 chunks=4 length=102400 type="buffer" benchmarker="autocannon" -5.17 % ** 7.153175e-03 http\\simple.js res="normal" c=500 chunks=4 length=102400 type="bytes" benchmarker="autocannon" -5.45 % * 1.902785e-02 http\\simple.js res="normal" c=500 chunks=4 length=4 type="buffer" benchmarker="autocannon" -6.04 % *** 1.989949e-08 http\\simple.js res="normal" c=500 chunks=4 length=4 type="bytes" benchmarker="autocannon" -2.89 % * 2.727371e-02 http\\simple.js res="setHeader" c=50 chunks=0 length=1024 type="buffer" benchmarker="autocannon" -5.84 % *** 3.927146e-09 http\\simple.js res="setHeader" c=50 chunks=0 length=1024 type="bytes" benchmarker="autocannon" -8.28 % *** 1.050204e-07 http\\simple.js res="setHeader" c=50 chunks=0 length=102400 type="buffer" benchmarker="autocannon" -4.73 % ** 3.158161e-03 http\\simple.js res="setHeader" c=50 chunks=0 length=102400 type="bytes" benchmarker="autocannon" -10.73 % *** 5.309183e-15 http\\simple.js res="setHeader" c=50 chunks=0 length=4 type="buffer" benchmarker="autocannon" -6.36 % *** 1.812964e-09 http\\simple.js res="setHeader" c=50 chunks=0 length=4 type="bytes" benchmarker="autocannon" -5.88 % *** 3.057814e-04 http\\simple.js res="setHeader" c=50 chunks=1 length=1024 type="buffer" benchmarker="autocannon" -5.58 % *** 1.925861e-08 http\\simple.js res="setHeader" c=50 chunks=1 length=1024 type="bytes" benchmarker="autocannon" -6.23 % *** 2.869951e-06 http\\simple.js res="setHeader" c=50 chunks=1 length=102400 type="buffer" benchmarker="autocannon" -5.82 % ** 1.198956e-03 http\\simple.js res="setHeader" c=50 chunks=1 length=102400 type="bytes" benchmarker="autocannon" -10.41 % *** 1.290550e-13 http\\simple.js res="setHeader" c=50 chunks=1 length=4 type="buffer" benchmarker="autocannon" -6.35 % *** 4.469679e-08 http\\simple.js res="setHeader" c=50 chunks=1 length=4 type="bytes" benchmarker="autocannon" -4.81 % *** 7.020090e-06 http\\simple.js res="setHeader" c=50 chunks=4 length=1024 type="buffer" benchmarker="autocannon" -5.62 % *** 4.475218e-06 http\\simple.js res="setHeader" c=50 chunks=4 length=1024 type="bytes" benchmarker="autocannon" -3.18 % ** 2.280484e-03 http\\simple.js res="setHeader" c=50 chunks=4 length=102400 type="buffer" benchmarker="autocannon" -5.60 % ** 2.814704e-03 http\\simple.js res="setHeader" c=50 chunks=4 length=102400 type="bytes" benchmarker="autocannon" -6.29 % ** 3.563679e-03 http\\simple.js res="setHeader" c=50 chunks=4 length=4 type="buffer" benchmarker="autocannon" -6.56 % *** 1.448702e-08 http\\simple.js res="setHeader" c=50 chunks=4 length=4 type="bytes" benchmarker="autocannon" -2.69 % * 1.272579e-02 http\\simple.js res="setHeader" c=500 chunks=0 length=1024 type="buffer" benchmarker="autocannon" -5.44 % *** 1.667645e-05 http\\simple.js res="setHeader" c=500 chunks=0 length=1024 type="bytes" benchmarker="autocannon" -8.81 % *** 9.475921e-08 http\\simple.js res="setHeader" c=500 chunks=0 length=102400 type="buffer" benchmarker="autocannon" -2.75 % 6.818363e-02 http\\simple.js res="setHeader" c=500 chunks=0 length=102400 type="bytes" benchmarker="autocannon" -10.21 % *** 2.970999e-13 http\\simple.js res="setHeader" c=500 chunks=0 length=4 type="buffer" benchmarker="autocannon" -4.93 % *** 4.878756e-04 http\\simple.js res="setHeader" c=500 chunks=0 length=4 type="bytes" benchmarker="autocannon" -8.33 % *** 4.536478e-09 http\\simple.js res="setHeader" c=500 chunks=1 length=1024 type="buffer" benchmarker="autocannon" -5.24 % *** 1.016925e-04 http\\simple.js res="setHeader" c=500 chunks=1 length=1024 type="bytes" benchmarker="autocannon" -6.63 % *** 9.762973e-05 http\\simple.js res="setHeader" c=500 chunks=1 length=102400 type="buffer" benchmarker="autocannon" -4.17 % * 2.297458e-02 http\\simple.js res="setHeader" c=500 chunks=1 length=102400 type="bytes" benchmarker="autocannon" -12.01 % *** 1.902364e-17 http\\simple.js res="setHeader" c=500 chunks=1 length=4 type="buffer" benchmarker="autocannon" -4.51 % *** 4.990340e-04 http\\simple.js res="setHeader" c=500 chunks=1 length=4 type="bytes" benchmarker="autocannon" -6.48 % *** 2.152770e-06 http\\simple.js res="setHeader" c=500 chunks=4 length=1024 type="buffer" benchmarker="autocannon" -5.43 % *** 5.798034e-06 http\\simple.js res="setHeader" c=500 chunks=4 length=1024 type="bytes" benchmarker="autocannon" -3.33 % * 2.798374e-02 http\\simple.js res="setHeader" c=500 chunks=4 length=102400 type="buffer" benchmarker="autocannon" -4.07 % * 3.823748e-02 http\\simple.js res="setHeader" c=500 chunks=4 length=102400 type="bytes" benchmarker="autocannon" -8.36 % *** 3.811375e-04 http\\simple.js res="setHeader" c=500 chunks=4 length=4 type="buffer" benchmarker="autocannon" -5.58 % *** 2.991319e-05 http\\simple.js res="setHeader" c=500 chunks=4 length=4 type="bytes" benchmarker="autocannon" -3.15 % * 3.128712e-02 http\\simple.js res="setHeaderWH" c=50 chunks=0 length=1024 type="buffer" benchmarker="autocannon" -4.23 % *** 1.635204e-04 http\\simple.js res="setHeaderWH" c=50 chunks=0 length=1024 type="bytes" benchmarker="autocannon" -9.60 % *** 1.959187e-07 http\\simple.js res="setHeaderWH" c=50 chunks=0 length=102400 type="buffer" benchmarker="autocannon" -3.42 % * 1.414317e-02 http\\simple.js res="setHeaderWH" c=50 chunks=0 length=102400 type="bytes" benchmarker="autocannon" -24.92 % *** 1.729289e-12 http\\simple.js res="setHeaderWH" c=50 chunks=0 length=4 type="buffer" benchmarker="autocannon" -3.85 % ** 2.921067e-03 http\\simple.js res="setHeaderWH" c=50 chunks=0 length=4 type="bytes" benchmarker="autocannon" -7.80 % *** 1.600889e-07 http\\simple.js res="setHeaderWH" c=50 chunks=1 length=1024 type="buffer" benchmarker="autocannon" -4.69 % *** 5.645600e-05 http\\simple.js res="setHeaderWH" c=50 chunks=1 length=1024 type="bytes" benchmarker="autocannon" -7.51 % *** 3.705732e-06 http\\simple.js res="setHeaderWH" c=50 chunks=1 length=102400 type="buffer" benchmarker="autocannon" -4.58 % *** 7.952977e-04 http\\simple.js res="setHeaderWH" c=50 chunks=1 length=102400 type="bytes" benchmarker="autocannon" -13.14 % *** 4.292583e-18 http\\simple.js res="setHeaderWH" c=50 chunks=1 length=4 type="buffer" benchmarker="autocannon" -4.65 % *** 4.776798e-05 http\\simple.js res="setHeaderWH" c=50 chunks=1 length=4 type="bytes" benchmarker="autocannon" -5.81 % *** 3.656902e-06 http\\simple.js res="setHeaderWH" c=50 chunks=4 length=1024 type="buffer" benchmarker="autocannon" -5.38 % *** 5.252614e-06 http\\simple.js res="setHeaderWH" c=50 chunks=4 length=1024 type="bytes" benchmarker="autocannon" -3.39 % ** 7.162036e-03 http\\simple.js res="setHeaderWH" c=50 chunks=4 length=102400 type="buffer" benchmarker="autocannon" -4.63 % ** 6.541741e-03 http\\simple.js res="setHeaderWH" c=50 chunks=4 length=102400 type="bytes" benchmarker="autocannon" -8.07 % *** 6.679127e-04 http\\simple.js res="setHeaderWH" c=50 chunks=4 length=4 type="buffer" benchmarker="autocannon" -5.88 % *** 1.664189e-06 http\\simple.js res="setHeaderWH" c=50 chunks=4 length=4 type="bytes" benchmarker="autocannon" -3.82 % *** 7.560696e-04 http\\simple.js res="setHeaderWH" c=500 chunks=0 length=1024 type="buffer" benchmarker="autocannon" -5.89 % *** 3.958380e-07 http\\simple.js res="setHeaderWH" c=500 chunks=0 length=1024 type="bytes" benchmarker="autocannon" -9.99 % *** 3.889125e-09 http\\simple.js res="setHeaderWH" c=500 chunks=0 length=102400 type="buffer" benchmarker="autocannon" -3.60 % * 4.319252e-02 http\\simple.js res="setHeaderWH" c=500 chunks=0 length=102400 type="bytes" benchmarker="autocannon" -28.63 % *** 2.439082e-18 http\\simple.js res="setHeaderWH" c=500 chunks=0 length=4 type="buffer" benchmarker="autocannon" -6.45 % *** 3.711696e-10 http\\simple.js res="setHeaderWH" c=500 chunks=0 length=4 type="bytes" benchmarker="autocannon" -7.29 % *** 2.646061e-08 http\\simple.js res="setHeaderWH" c=500 chunks=1 length=1024 type="buffer" benchmarker="autocannon" -6.22 % *** 9.347363e-06 http\\simple.js res="setHeaderWH" c=500 chunks=1 length=1024 type="bytes" benchmarker="autocannon" -6.44 % *** 1.845766e-05 http\\simple.js res="setHeaderWH" c=500 chunks=1 length=102400 type="buffer" benchmarker="autocannon" -5.09 % * 1.153079e-02 http\\simple.js res="setHeaderWH" c=500 chunks=1 length=102400 type="bytes" benchmarker="autocannon" -15.37 % *** 1.632493e-16 http\\simple.js res="setHeaderWH" c=500 chunks=1 length=4 type="buffer" benchmarker="autocannon" -5.77 % *** 9.809755e-07 http\\simple.js res="setHeaderWH" c=500 chunks=1 length=4 type="bytes" benchmarker="autocannon" -4.46 % *** 3.223076e-04 http\\simple.js res="setHeaderWH" c=500 chunks=4 length=1024 type="buffer" benchmarker="autocannon" -6.08 % *** 5.702144e-06 http\\simple.js res="setHeaderWH" c=500 chunks=4 length=1024 type="bytes" benchmarker="autocannon" -2.95 % * 1.536396e-02 http\\simple.js res="setHeaderWH" c=500 chunks=4 length=102400 type="buffer" benchmarker="autocannon" -4.31 % * 1.684718e-02 http\\simple.js res="setHeaderWH" c=500 chunks=4 length=102400 type="bytes" benchmarker="autocannon" -7.40 % ** 2.654488e-03 http\\simple.js res="setHeaderWH" c=500 chunks=4 length=4 type="buffer" benchmarker="autocannon" -6.73 % *** 7.854392e-09 http\\simple.js res="setHeaderWH" c=500 chunks=4 length=4 type="bytes" benchmarker="autocannon" -3.46 % ** 7.784934e-03 ```
module ``` improvement confidence p.value module\\module-loader.js useCache="false" fullPath="false" thousands=50 -4.24 % * 2.924986e-02 module\\module-loader.js useCache="false" fullPath="true" thousands=50 1.43 % 4.253951e-01 module\\module-loader.js useCache="true" fullPath="false" thousands=50 19.81 % *** 2.188674e-07 module\\module-loader.js useCache="true" fullPath="true" thousands=50 5.57 % 3.987202e-01 ```
net ``` improvement confidence p.value net\\net-c2s-cork.js dur=5 type="buf" len=1024 -1.82 % *** 1.459071e-04 net\\net-c2s-cork.js dur=5 type="buf" len=128 -2.08 % *** 2.868727e-05 net\\net-c2s-cork.js dur=5 type="buf" len=16 -1.22 % ** 7.662987e-03 net\\net-c2s-cork.js dur=5 type="buf" len=32 -1.72 % *** 8.782447e-04 net\\net-c2s-cork.js dur=5 type="buf" len=4 -1.03 % * 2.950394e-02 net\\net-c2s-cork.js dur=5 type="buf" len=512 -2.09 % *** 4.327445e-07 net\\net-c2s-cork.js dur=5 type="buf" len=64 -1.86 % *** 9.534242e-05 net\\net-c2s-cork.js dur=5 type="buf" len=8 1.23 % ** 3.051232e-03 net\\net-c2s.js dur=5 type="asc" len=102400 -1.57 % *** 1.533519e-04 net\\net-c2s.js dur=5 type="asc" len=16777216 -0.02 % 9.339418e-01 net\\net-c2s.js dur=5 type="buf" len=102400 -1.35 % *** 2.334037e-04 net\\net-c2s.js dur=5 type="buf" len=16777216 0.97 % *** 1.881552e-05 net\\net-c2s.js dur=5 type="utf" len=102400 -0.77 % ** 3.194185e-03 net\\net-c2s.js dur=5 type="utf" len=16777216 0.87 % *** 7.962570e-04 net\\net-pipe.js dur=5 type="asc" len=102400 21.46 % 5.914150e-02 net\\net-pipe.js dur=5 type="asc" len=16777216 -5.31 % 5.306393e-01 net\\net-pipe.js dur=5 type="buf" len=102400 15.24 % 1.506721e-01 net\\net-pipe.js dur=5 type="buf" len=16777216 17.44 % 1.068245e-01 net\\net-pipe.js dur=5 type="utf" len=102400 6.00 % 3.415080e-01 net\\net-pipe.js dur=5 type="utf" len=16777216 4.76 % 5.760742e-01 net\\net-s2c.js dur=5 type="asc" len=102400 -1.26 % *** 1.179792e-04 net\\net-s2c.js dur=5 type="asc" len=16777216 0.24 % 2.778647e-01 net\\net-s2c.js dur=5 type="buf" len=102400 -1.58 % *** 1.175153e-04 net\\net-s2c.js dur=5 type="buf" len=16777216 1.09 % ** 9.607544e-03 net\\net-s2c.js dur=5 type="utf" len=102400 -1.39 % *** 1.722645e-10 net\\net-s2c.js dur=5 type="utf" len=16777216 0.93 % 1.215938e-01 net\\tcp-raw-c2s.js dur=5 type="asc" len=102400 -0.51 % 2.520456e-01 net\\tcp-raw-c2s.js dur=5 type="asc" len=16777216 -0.68 % * 3.019990e-02 net\\tcp-raw-c2s.js dur=5 type="buf" len=102400 -0.53 % 5.924597e-02 net\\tcp-raw-c2s.js dur=5 type="buf" len=16777216 0.65 % ** 1.305128e-03 net\\tcp-raw-c2s.js dur=5 type="utf" len=102400 -0.53 % 9.120898e-02 net\\tcp-raw-c2s.js dur=5 type="utf" len=16777216 0.63 % 1.074695e-01 net\\tcp-raw-s2c.js dur=5 type="asc" len=102400 -0.71 % * 4.672277e-02 net\\tcp-raw-s2c.js dur=5 type="asc" len=16777216 -0.21 % 6.686713e-01 net\\tcp-raw-s2c.js dur=5 type="buf" len=102400 -0.67 % 5.853961e-02 net\\tcp-raw-s2c.js dur=5 type="buf" len=16777216 0.61 % *** 4.102306e-04 net\\tcp-raw-s2c.js dur=5 type="utf" len=102400 -0.21 % 6.136643e-01 net\\tcp-raw-s2c.js dur=5 type="utf" len=16777216 -0.16 % 7.074423e-01 ```
os ``` improvement confidence p.value os\\cpus.js n=30000 -5.34 % *** 1.939582e-21 os\\loadavg.js n=5000000 13.34 % *** 8.419388e-36 ```
process ``` improvement confidence p.value process\\bench-env.js n=100000 0.28 % 1.493386e-01 process\\bench-hrtime.js type="diff" n=1000000 -0.31 % *** 9.291465e-06 process\\bench-hrtime.js type="raw" n=1000000 -0.37 % *** 4.781790e-16 process\\memoryUsage.js n=100000 -5.51 % *** 1.062248e-13 process\\next-tick-breadth-args.js millions=2 -20.70 % *** 5.710155e-60 process\\next-tick-breadth.js millions=2 11.20 % *** 2.730821e-47 process\\next-tick-depth-args.js millions=2 -30.70 % *** 2.342960e-62 process\\next-tick-depth.js millions=2 -28.69 % *** 6.210576e-43 ```
querystring ``` improvement confidence p.value querystring\\querystring-parse.js n=1000000 type="altspaces" -10.92 % *** 1.364564e-13 querystring\\querystring-parse.js n=1000000 type="encodefake" -10.04 % *** 4.934766e-25 querystring\\querystring-parse.js n=1000000 type="encodelast" -10.78 % *** 6.040949e-27 querystring\\querystring-parse.js n=1000000 type="encodemany" -3.88 % *** 2.484171e-12 querystring\\querystring-parse.js n=1000000 type="manyblankpairs" 17.03 % *** 3.669811e-30 querystring\\querystring-parse.js n=1000000 type="manypairs" 71.94 % *** 2.961889e-50 querystring\\querystring-parse.js n=1000000 type="multicharsep" -15.18 % *** 4.718177e-32 querystring\\querystring-parse.js n=1000000 type="multivalue" -2.28 % *** 3.041186e-07 querystring\\querystring-parse.js n=1000000 type="multivaluemany" -14.39 % *** 4.898868e-31 querystring\\querystring-parse.js n=1000000 type="noencode" -11.90 % *** 1.981318e-26 querystring\\querystring-stringify.js n=10000000 type="encodelast" -16.25 % *** 2.404157e-31 querystring\\querystring-stringify.js n=10000000 type="encodemany" -18.63 % *** 3.232300e-64 querystring\\querystring-stringify.js n=10000000 type="noencode" -5.14 % *** 6.372979e-24 querystring\\querystring-unescapebuffer.js n=10000000 input="%20%21%22%23%24%25%26%27%28%29%2A%2B%2C%2D%2E%2F%30%31%32%33%34%35%36%37" -6.47 % *** 1.572508e-22 querystring\\querystring-unescapebuffer.js n=10000000 input="there is nothing to unescape here" 3.07 % *** 2.934277e-06 querystring\\querystring-unescapebuffer.js n=10000000 input="there%20are%20several%20spaces%20that%20need%20to%20be%20unescaped" -10.03 % *** 3.310386e-19 querystring\\querystring-unescapebuffer.js n=10000000 input="there%2Qare%0-fake%escaped values in%%%%this%9Hstring" -5.56 % *** 6.509139e-16 ```
streams ``` improvement confidence p.value streams/readable-bigread.js n=1000 -10.73 % *** 1.269154e-12 streams/readable-bigunevenread.js n=1000 -13.88 % *** 1.834009e-19 streams/readable-boundaryread.js n=2000 -13.83 % *** 4.606770e-10 streams/readable-readall.js n=5000 -9.64 % *** 3.697793e-25 streams/readable-unevenread.js n=1000 -8.92 % *** 8.211917e-14 streams/writable-manywrites.js n=2000000 -22.36 % *** 9.987796e-27 ```
streams (windows) ``` improvement confidence p.value streams\\readable-bigread.js n=1000 -17.60 % *** 2.188145e-39 streams\\readable-bigunevenread.js n=1000 -14.71 % *** 8.952692e-34 streams\\readable-boundaryread.js n=2000 -13.13 % *** 8.564883e-31 streams\\readable-readall.js n=5000 -14.74 % *** 2.377291e-42 streams\\readable-unevenread.js n=1000 -13.26 % *** 5.473820e-19 streams\\writable-manywrites.js n=2000000 -15.44 % *** 2.245030e-33 ```
string_decoder (`string-decoder.js` was launched with `n=25e4` instead of `25e5`) ``` improvement confidence p.value string_decoder\\string-decoder-create.js n=25000000 encoding="ascii" -5.57 % *** 2.938499e-28 string_decoder\\string-decoder-create.js n=25000000 encoding="AscII" -11.21 % *** 2.233764e-31 string_decoder\\string-decoder-create.js n=25000000 encoding="base64" 18.13 % *** 2.788810e-43 string_decoder\\string-decoder-create.js n=25000000 encoding="ucs2" 21.31 % *** 3.090671e-35 string_decoder\\string-decoder-create.js n=25000000 encoding="UTF-16LE" 12.17 % *** 1.610229e-15 string_decoder\\string-decoder-create.js n=25000000 encoding="utf-8" 26.49 % *** 5.179343e-44 string_decoder\\string-decoder-create.js n=25000000 encoding="UTF-8" 17.64 % *** 1.119155e-32 string_decoder\\string-decoder-create.js n=25000000 encoding="utf8" 33.97 % *** 2.164914e-43 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=1024 encoding="ascii" -10.28 % *** 4.118098e-43 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=1024 encoding="base64-ascii" -10.85 % *** 2.352498e-64 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=1024 encoding="base64-utf8" -10.11 % *** 2.515007e-49 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=1024 encoding="utf16le" -4.03 % *** 2.609310e-37 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=1024 encoding="utf8" -5.25 % *** 3.511981e-63 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=128 encoding="ascii" -19.03 % *** 6.691114e-43 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=128 encoding="base64-ascii" -18.85 % *** 8.161656e-24 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=128 encoding="base64-utf8" -18.74 % *** 8.300350e-27 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=128 encoding="utf16le" -15.45 % *** 1.551373e-57 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=128 encoding="utf8" -13.16 % *** 6.316570e-62 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=32 encoding="ascii" -20.26 % *** 3.785883e-47 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=32 encoding="base64-ascii" -21.82 % *** 1.009891e-21 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=32 encoding="base64-utf8" -21.91 % *** 3.389575e-20 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=32 encoding="utf16le" -15.73 % *** 3.185635e-44 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=32 encoding="utf8" -27.20 % *** 5.069660e-61 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=4096 encoding="ascii" -7.34 % *** 1.208310e-39 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=4096 encoding="base64-ascii" -7.49 % *** 2.706785e-40 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=4096 encoding="base64-utf8" -7.27 % *** 2.205726e-33 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=4096 encoding="utf16le" -3.41 % *** 1.607691e-15 string_decoder\\string-decoder.js n=250000 chunk=1024 inlen=4096 encoding="utf8" -4.79 % *** 3.066881e-69 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=1024 encoding="ascii" -21.32 % *** 3.470832e-57 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=1024 encoding="base64-ascii" -21.74 % *** 7.859288e-35 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=1024 encoding="base64-utf8" -22.21 % *** 1.199006e-35 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=1024 encoding="utf16le" -12.17 % *** 3.176889e-22 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=1024 encoding="utf8" -16.20 % *** 6.902098e-31 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=128 encoding="ascii" -21.20 % *** 1.196128e-43 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=128 encoding="base64-ascii" -22.98 % *** 7.835172e-36 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=128 encoding="base64-utf8" -21.89 % *** 3.082109e-32 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=128 encoding="utf16le" -13.96 % *** 1.030760e-20 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=128 encoding="utf8" -26.04 % *** 6.023027e-37 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=32 encoding="ascii" -22.78 % *** 4.964699e-53 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=32 encoding="base64-ascii" -24.04 % *** 2.392287e-36 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=32 encoding="base64-utf8" -23.38 % *** 1.614575e-31 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=32 encoding="utf16le" -17.59 % *** 6.662991e-47 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=32 encoding="utf8" -30.77 % *** 1.348067e-69 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=4096 encoding="ascii" -18.28 % *** 2.205989e-24 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=4096 encoding="base64-ascii" -20.96 % *** 7.900781e-24 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=4096 encoding="base64-utf8" -22.17 % *** 9.200040e-52 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=4096 encoding="utf16le" -13.88 % *** 2.685590e-44 string_decoder\\string-decoder.js n=250000 chunk=16 inlen=4096 encoding="utf8" -17.09 % *** 1.771876e-49 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=1024 encoding="ascii" -12.46 % *** 8.386790e-34 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=1024 encoding="base64-ascii" -14.75 % *** 6.154259e-29 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=1024 encoding="base64-utf8" -11.85 % *** 3.647512e-30 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=1024 encoding="utf16le" -7.36 % *** 1.969025e-25 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=1024 encoding="utf8" -4.14 % *** 8.657672e-36 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=128 encoding="ascii" -18.56 % *** 2.216563e-38 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=128 encoding="base64-ascii" -17.95 % *** 1.226298e-20 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=128 encoding="base64-utf8" -18.22 % *** 1.556503e-22 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=128 encoding="utf16le" -15.75 % *** 1.177897e-53 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=128 encoding="utf8" -12.93 % *** 4.922752e-61 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=32 encoding="ascii" -20.00 % *** 2.622663e-47 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=32 encoding="base64-ascii" -22.46 % *** 2.631449e-22 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=32 encoding="base64-utf8" -23.06 % *** 2.441661e-22 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=32 encoding="utf16le" -16.00 % *** 1.075582e-49 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=32 encoding="utf8" -27.23 % *** 1.741069e-66 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=4096 encoding="ascii" -12.18 % *** 2.709551e-37 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=4096 encoding="base64-ascii" -9.53 % *** 5.832544e-21 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=4096 encoding="base64-utf8" -8.51 % *** 5.870005e-27 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=4096 encoding="utf16le" -7.64 % *** 2.962503e-33 string_decoder\\string-decoder.js n=250000 chunk=256 inlen=4096 encoding="utf8" -3.02 % *** 7.767665e-47 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=1024 encoding="ascii" -15.56 % *** 4.858562e-43 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=1024 encoding="base64-ascii" -16.94 % *** 5.797840e-19 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=1024 encoding="base64-utf8" -12.47 % *** 1.226234e-20 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=1024 encoding="utf16le" -9.30 % *** 3.702454e-20 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=1024 encoding="utf8" -10.59 % *** 8.160000e-54 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=128 encoding="ascii" -19.21 % *** 7.353231e-50 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=128 encoding="base64-ascii" -16.99 % *** 8.922750e-18 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=128 encoding="base64-utf8" -14.68 % *** 1.513500e-22 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=128 encoding="utf16le" -16.00 % *** 3.151190e-46 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=128 encoding="utf8" -16.36 % *** 2.746556e-59 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=32 encoding="ascii" -20.88 % *** 2.914962e-33 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=32 encoding="base64-ascii" -23.01 % *** 8.390443e-24 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=32 encoding="base64-utf8" -22.59 % *** 2.732638e-20 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=32 encoding="utf16le" -15.60 % *** 5.365177e-39 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=32 encoding="utf8" -26.52 % *** 8.555508e-38 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=4096 encoding="ascii" -19.69 % *** 1.330018e-38 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=4096 encoding="base64-ascii" -11.96 % *** 6.249688e-17 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=4096 encoding="base64-utf8" -8.68 % *** 5.494369e-11 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=4096 encoding="utf16le" -12.10 % *** 7.708981e-45 string_decoder\\string-decoder.js n=250000 chunk=64 inlen=4096 encoding="utf8" -3.56 % *** 1.850288e-45 ```
timers ``` improvement confidence p.value timers/immediate.js type="breadth" thousands=2000 12.76 % *** 8.348231e-05 timers/immediate.js type="breadth1" thousands=2000 6.83 % *** 3.396593e-04 timers/immediate.js type="breadth4" thousands=2000 1.13 % 6.231323e-01 timers/immediate.js type="clear" thousands=2000 6.40 % *** 1.983798e-04 timers/immediate.js type="depth" thousands=2000 5.43 % *** 3.101314e-05 timers/immediate.js type="depth1" thousands=2000 9.83 % *** 5.083261e-11 timers/set-immediate-breadth-args.js millions=5 -0.12 % 7.798393e-01 timers/set-immediate-breadth.js millions=10 3.89 % *** 7.465471e-15 timers/set-immediate-depth-args.js millions=10 16.38 % *** 1.535860e-20 timers/set-immediate-depth.js millions=10 6.00 % *** 8.826471e-14 timers/timers-breadth.js thousands=500 8.19 % *** 8.195604e-18 timers/timers-cancel-pooled.js thousands=500 0.39 % 6.270987e-01 timers/timers-cancel-unpooled.js thousands=100 -0.17 % *** 9.034505e-04 timers/timers-depth.js thousands=1 -0.25 % 7.790906e-01 timers/timers-insert-pooled.js thousands=500 -11.42 % *** 5.366038e-36 timers/timers-insert-unpooled.js thousands=100 -5.00 % *** 4.390698e-11 timers/timers-timeout-pooled.js thousands=500 90.99 % *** 1.828523e-24 ```
timers (windows) ``` improvement confidence p.value timers\\immediate.js type="breadth" thousands=2000 13.61 % *** 9.040825e-20 timers\\immediate.js type="breadth1" thousands=2000 11.29 % *** 3.955783e-19 timers\\immediate.js type="breadth4" thousands=2000 7.33 % *** 7.727951e-22 timers\\immediate.js type="clear" thousands=2000 20.89 % *** 2.369455e-35 timers\\immediate.js type="depth" thousands=2000 6.78 % *** 1.987398e-38 timers\\immediate.js type="depth1" thousands=2000 7.84 % *** 2.557152e-46 timers\\set-immediate-breadth-args.js millions=5 -4.05 % *** 4.449593e-05 timers\\set-immediate-breadth.js millions=10 16.72 % *** 1.136465e-43 timers\\set-immediate-depth-args.js millions=10 11.82 % *** 5.897423e-39 timers\\set-immediate-depth.js millions=10 1.77 % *** 6.841528e-10 timers\\timers-breadth.js thousands=500 3.36 % *** 4.310861e-24 timers\\timers-cancel-pooled.js thousands=500 1.03 % 1.787179e-01 timers\\timers-cancel-unpooled.js thousands=100 -0.44 % 7.711119e-01 timers\\timers-depth.js thousands=1 0.24 % ** 1.072972e-03 timers\\timers-insert-pooled.js thousands=500 -4.06 % *** 7.462975e-18 timers\\timers-insert-unpooled.js thousands=100 -6.09 % *** 7.852493e-37 timers\\timers-timeout-pooled.js thousands=500 121.48 % *** 4.629659e-30 ```
tls ``` improvement confidence p.value tls\\convertprotocols.js n=1 -1.28 % 3.987238e-01 tls\\convertprotocols.js n=50000 -7.17 % *** 1.529057e-17 tls\\throughput.js size=1024 type="asc" dur=5 -0.46 % *** 2.143612e-04 tls\\throughput.js size=1024 type="buf" dur=5 -0.54 % *** 2.668916e-07 tls\\throughput.js size=1024 type="utf" dur=5 -0.53 % *** 2.389609e-06 tls\\throughput.js size=1048576 type="asc" dur=5 -0.53 % *** 1.990643e-09 tls\\throughput.js size=1048576 type="buf" dur=5 -0.52 % *** 1.093546e-12 tls\\throughput.js size=1048576 type="utf" dur=5 -0.80 % *** 3.224579e-13 tls\\throughput.js size=2 type="asc" dur=5 4.04 % *** 7.047651e-15 tls\\throughput.js size=2 type="buf" dur=5 3.99 % *** 6.373564e-12 tls\\throughput.js size=2 type="utf" dur=5 -0.14 % 6.862909e-01 tls\\tls-connect.js dur=5 concurrency=1 -1.55 % *** 1.795457e-07 tls\\tls-connect.js dur=5 concurrency=10 -2.21 % *** 4.948116e-13 ```
url ``` improvement confidence p.value url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="auth" -34.68 % *** 1.134414e-42 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="dot" -36.20 % *** 3.690335e-38 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="file" -37.51 % *** 1.797921e-72 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="idn" -0.14 % 7.634703e-01 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="javascript" -37.03 % *** 1.103488e-61 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="long" -35.99 % *** 7.285023e-63 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="percent" -37.05 % *** 1.104747e-33 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="short" -36.11 % *** 8.727093e-62 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="legacy" type="ws" -35.67 % *** 1.944222e-38 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="auth" -48.61 % *** 7.992448e-58 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="dot" -45.38 % *** 3.662469e-33 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="file" -47.54 % *** 9.435727e-33 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="idn" -65.33 % *** 7.051892e-87 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="javascript" -69.68 % *** 1.603037e-34 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="long" -43.30 % *** 3.376686e-56 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="percent" -61.89 % *** 2.388693e-38 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="short" -44.23 % *** 2.510468e-27 url\\legacy-vs-whatwg-url-get-prop.js n=100000 method="whatwg" type="ws" -55.04 % *** 4.578596e-55 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="auth" -12.45 % *** 1.711388e-40 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="dot" 0.45 % 1.882933e-01 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="file" 98.08 % *** 1.621694e-64 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="idn" 1.15 % *** 4.218465e-04 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="javascript" 13.76 % *** 1.356816e-50 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="long" 2.27 % *** 1.409552e-14 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="percent" 96.61 % *** 1.899178e-82 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="short" 0.80 % * 1.239411e-02 url\\legacy-vs-whatwg-url-parse.js n=100000 method="legacy" type="ws" 0.85 % ** 9.112197e-03 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="auth" 2.50 % *** 7.503010e-11 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="dot" 7.52 % *** 8.455763e-38 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="file" 7.90 % *** 1.526125e-36 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="idn" 5.55 % *** 2.489551e-43 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="javascript" 12.64 % *** 2.417359e-48 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="long" 6.94 % *** 2.121187e-55 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="percent" 7.66 % *** 5.306395e-46 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="short" 7.11 % *** 2.798048e-42 url\\legacy-vs-whatwg-url-parse.js n=100000 method="whatwg" type="ws" 6.11 % *** 2.729744e-37 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="altspaces" -14.68 % *** 1.929322e-29 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="encodefake" -16.68 % *** 7.459998e-34 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="encodelast" -13.59 % *** 7.181302e-34 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="encodemany" -6.63 % *** 1.324676e-23 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="manyblankpairs" -61.45 % *** 6.221670e-29 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="manypairs" 69.11 % *** 9.437955e-54 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="multicharsep" -13.70 % *** 8.321268e-48 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="multivalue" -11.17 % *** 4.977578e-26 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="multivaluemany" -16.96 % *** 1.765300e-30 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="legacy" type="noencode" -15.45 % *** 3.347243e-36 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="altspaces" -13.75 % *** 1.404840e-51 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="encodefake" -10.75 % *** 5.581615e-23 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="encodelast" -9.40 % *** 2.358757e-32 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="encodemany" -2.84 % *** 2.638015e-10 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="manyblankpairs" -31.54 % *** 3.377100e-53 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="manypairs" 35.70 % *** 4.250240e-50 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="multicharsep" -9.30 % *** 4.442361e-21 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="multivalue" -5.55 % *** 1.122990e-26 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="multivaluemany" -13.67 % *** 8.816168e-40 url\\legacy-vs-whatwg-url-searchparams-parse.js n=100000 method="whatwg" type="noencode" -11.04 % *** 8.930977e-22 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="altspaces" -38.20 % *** 1.371476e-40 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="encodefake" -29.33 % *** 3.796764e-41 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="encodelast" -17.64 % *** 9.479205e-38 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="encodemany" -15.80 % *** 9.898271e-28 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="manyblankpairs" -25.85 % *** 9.208104e-36 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="manypairs" -7.40 % *** 2.529692e-26 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="multicharsep" -17.07 % *** 1.035808e-29 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="multivalue" -13.49 % *** 1.196666e-31 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="multivaluemany" -9.98 % *** 4.374953e-32 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="legacy" type="noencode" -17.37 % *** 2.798452e-41 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="altspaces" -34.87 % *** 2.000988e-44 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="encodefake" -24.12 % *** 9.944973e-42 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="encodelast" -2.28 % *** 8.334588e-07 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="encodemany" -2.31 % *** 6.106178e-05 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="manyblankpairs" -18.84 % *** 3.308262e-21 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="manypairs" -2.90 % *** 1.820190e-08 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="multicharsep" -2.40 % *** 2.367131e-05 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="multivalue" -4.30 % *** 3.218007e-12 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="multivaluemany" -4.80 % *** 2.103796e-14 url\\legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method="whatwg" type="noencode" -2.66 % *** 2.926273e-07 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="auth" -51.73 % *** 4.379512e-51 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="dot" -5.18 % *** 1.735350e-24 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="file" -5.89 % *** 1.226933e-20 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="idn" -2.28 % *** 2.800866e-10 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="javascript" 13.51 % *** 4.329471e-45 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="long" -12.73 % *** 2.274410e-27 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="percent" -4.31 % *** 3.444205e-13 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="short" -3.60 % *** 1.365628e-13 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="legacy" type="ws" -8.52 % *** 1.231807e-38 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="auth" -27.34 % *** 5.465109e-50 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="dot" -28.28 % *** 1.288086e-58 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="file" -35.34 % *** 4.934594e-74 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="idn" -30.77 % *** 3.725545e-59 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="javascript" -42.18 % *** 8.087409e-58 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="long" -34.16 % *** 2.065759e-56 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="percent" -31.25 % *** 6.367013e-51 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="short" -33.69 % *** 6.343895e-52 url\\legacy-vs-whatwg-url-serialize.js n=100000 method="whatwg" type="ws" -30.20 % *** 2.051514e-52 url\\url-format.js n=25000000 type="file" 2.21 % *** 1.136270e-07 url\\url-format.js n=25000000 type="slashes" 10.82 % *** 1.191810e-39 url\\url-resolve.js n=100000 path="down" href="auth" -3.12 % *** 1.876031e-11 url\\url-resolve.js n=100000 path="down" href="dot" 0.66 % * 4.852259e-02 url\\url-resolve.js n=100000 path="down" href="file" 57.66 % *** 2.305978e-79 url\\url-resolve.js n=100000 path="down" href="idn" 0.68 % ** 6.882208e-03 url\\url-resolve.js n=100000 path="down" href="javascript" 25.13 % *** 1.492438e-55 url\\url-resolve.js n=100000 path="down" href="long" -1.08 % *** 1.791669e-06 url\\url-resolve.js n=100000 path="down" href="noscheme" -8.51 % *** 5.063194e-18 url\\url-resolve.js n=100000 path="down" href="percent" 59.67 % *** 5.046567e-81 url\\url-resolve.js n=100000 path="down" href="short" 2.48 % *** 3.496543e-10 url\\url-resolve.js n=100000 path="down" href="ws" 17.53 % *** 1.419044e-50 url\\url-resolve.js n=100000 path="foo/bar" href="auth" -7.60 % *** 2.216584e-21 url\\url-resolve.js n=100000 path="foo/bar" href="dot" 1.60 % *** 1.993903e-05 url\\url-resolve.js n=100000 path="foo/bar" href="file" 55.15 % *** 2.840973e-81 url\\url-resolve.js n=100000 path="foo/bar" href="idn" -1.34 % *** 3.903494e-04 url\\url-resolve.js n=100000 path="foo/bar" href="javascript" 25.80 % *** 1.284336e-72 url\\url-resolve.js n=100000 path="foo/bar" href="long" -4.51 % *** 5.230985e-31 url\\url-resolve.js n=100000 path="foo/bar" href="noscheme" -8.54 % *** 7.546034e-23 url\\url-resolve.js n=100000 path="foo/bar" href="percent" 54.50 % *** 1.572397e-81 url\\url-resolve.js n=100000 path="foo/bar" href="short" -1.24 % ** 3.113847e-03 url\\url-resolve.js n=100000 path="foo/bar" href="ws" 17.65 % *** 2.496146e-49 url\\url-resolve.js n=100000 path="sibling" href="auth" -2.36 % *** 4.817946e-08 url\\url-resolve.js n=100000 path="sibling" href="dot" 1.18 % ** 1.966300e-03 url\\url-resolve.js n=100000 path="sibling" href="file" 63.13 % *** 1.468631e-87 url\\url-resolve.js n=100000 path="sibling" href="idn" 0.09 % 7.115274e-01 url\\url-resolve.js n=100000 path="sibling" href="javascript" 23.15 % *** 2.968431e-52 url\\url-resolve.js n=100000 path="sibling" href="long" -1.46 % *** 9.864590e-06 url\\url-resolve.js n=100000 path="sibling" href="noscheme" -7.02 % *** 6.240868e-22 url\\url-resolve.js n=100000 path="sibling" href="percent" 63.87 % *** 5.207680e-87 url\\url-resolve.js n=100000 path="sibling" href="short" 0.31 % 3.489059e-01 url\\url-resolve.js n=100000 path="sibling" href="ws" 16.66 % *** 6.019323e-55 url\\url-resolve.js n=100000 path="up" href="auth" -3.18 % *** 6.211091e-14 url\\url-resolve.js n=100000 path="up" href="dot" 2.48 % *** 2.235447e-11 url\\url-resolve.js n=100000 path="up" href="file" 64.16 % *** 1.120646e-60 url\\url-resolve.js n=100000 path="up" href="idn" 2.05 % *** 7.035095e-11 url\\url-resolve.js n=100000 path="up" href="javascript" 23.82 % *** 1.183798e-55 url\\url-resolve.js n=100000 path="up" href="long" -0.12 % 5.914309e-01 url\\url-resolve.js n=100000 path="up" href="noscheme" -3.24 % *** 5.245393e-13 url\\url-resolve.js n=100000 path="up" href="percent" 62.59 % *** 9.910767e-85 url\\url-resolve.js n=100000 path="up" href="short" 0.86 % * 1.166051e-02 url\\url-resolve.js n=100000 path="up" href="ws" 17.43 % *** 2.954736e-63 url\\url-resolve.js n=100000 path="withscheme" href="auth" -1.94 % *** 3.003200e-05 url\\url-resolve.js n=100000 path="withscheme" href="dot" 3.15 % *** 8.889146e-11 url\\url-resolve.js n=100000 path="withscheme" href="file" 80.29 % *** 2.949170e-80 url\\url-resolve.js n=100000 path="withscheme" href="idn" 4.70 % *** 1.548568e-23 url\\url-resolve.js n=100000 path="withscheme" href="javascript" 0.93 % * 1.054471e-02 url\\url-resolve.js n=100000 path="withscheme" href="long" 4.39 % *** 1.507388e-21 url\\url-resolve.js n=100000 path="withscheme" href="noscheme" -4.35 % *** 2.632984e-12 url\\url-resolve.js n=100000 path="withscheme" href="percent" 78.78 % *** 2.885921e-85 url\\url-resolve.js n=100000 path="withscheme" href="short" 3.95 % *** 6.668780e-13 url\\url-resolve.js n=100000 path="withscheme" href="ws" 2.31 % *** 9.448911e-11 url\\url-searchparams-iteration.js n=1000000 method="forEach" -6.36 % *** 6.228921e-23 url\\url-searchparams-iteration.js n=1000000 method="iterator" 44.89 % *** 2.507953e-75 url\\url-searchparams-read.js n=1000000 param="nonexistent" method="get" -2.40 % *** 6.349718e-09 url\\url-searchparams-read.js n=1000000 param="nonexistent" method="getAll" -5.26 % *** 3.396310e-20 url\\url-searchparams-read.js n=1000000 param="nonexistent" method="has" 2.03 % *** 2.035114e-04 url\\url-searchparams-read.js n=1000000 param="one" method="get" -6.95 % *** 5.136380e-17 url\\url-searchparams-read.js n=1000000 param="one" method="getAll" -1.00 % *** 1.246260e-04 url\\url-searchparams-read.js n=1000000 param="one" method="has" -5.98 % *** 4.260513e-24 url\\url-searchparams-read.js n=1000000 param="three" method="get" -4.27 % *** 1.108214e-18 url\\url-searchparams-read.js n=1000000 param="three" method="getAll" -6.90 % *** 1.815173e-23 url\\url-searchparams-read.js n=1000000 param="three" method="has" 0.00 % 9.966544e-01 url\\url-searchparams-read.js n=1000000 param="two" method="get" -5.57 % *** 2.739023e-16 url\\url-searchparams-read.js n=1000000 param="two" method="getAll" -5.53 % *** 7.586545e-21 url\\url-searchparams-read.js n=1000000 param="two" method="has" -1.92 % *** 6.239710e-08 url\\url-searchparams-sort.js n=1000000 type="almostsorted" 2.35 % *** 1.322935e-05 url\\url-searchparams-sort.js n=1000000 type="empty" -21.89 % *** 2.378564e-48 url\\url-searchparams-sort.js n=1000000 type="long" 5.88 % *** 9.087719e-17 url\\url-searchparams-sort.js n=1000000 type="random" 2.00 % 5.024592e-02 url\\url-searchparams-sort.js n=1000000 type="reversed" 2.29 % *** 5.462454e-12 url\\url-searchparams-sort.js n=1000000 type="short" 1.89 % *** 2.360603e-08 url\\url-searchparams-sort.js n=1000000 type="sorted" 5.70 % *** 2.041392e-23 url\\usvstring.js n=50000000 input="allinvalid" -18.33 % *** 7.074157e-42 url\\usvstring.js n=50000000 input="nonstring" 3.36 % *** 2.835381e-26 url\\usvstring.js n=50000000 input="someinvalid" -20.13 % *** 3.506343e-41 url\\usvstring.js n=50000000 input="valid" -17.29 % *** 7.099021e-61 url\\usvstring.js n=50000000 input="validsurr" -6.33 % *** 1.076393e-44 url\\whatwg-url-idna.js n=5000000 to="ascii" input="all" -6.92 % *** 1.017367e-54 url\\whatwg-url-idna.js n=5000000 to="ascii" input="empty" -45.72 % *** 2.164783e-51 url\\whatwg-url-idna.js n=5000000 to="ascii" input="none" -16.72 % *** 8.775029e-40 url\\whatwg-url-idna.js n=5000000 to="ascii" input="nonstring" -25.84 % *** 1.076997e-58 url\\whatwg-url-idna.js n=5000000 to="ascii" input="some" -6.34 % *** 1.003916e-38 url\\whatwg-url-idna.js n=5000000 to="unicode" input="all" 4.72 % *** 1.042363e-48 url\\whatwg-url-idna.js n=5000000 to="unicode" input="empty" -45.95 % *** 5.020348e-42 url\\whatwg-url-idna.js n=5000000 to="unicode" input="none" -7.51 % *** 1.010640e-34 url\\whatwg-url-idna.js n=5000000 to="unicode" input="nonstring" -27.50 % *** 4.037907e-63 url\\whatwg-url-idna.js n=5000000 to="unicode" input="some" 3.37 % *** 6.093441e-47 url\\whatwg-url-properties.js n=10000 prop="hash" input="auth" -13.05 % *** 2.634506e-30 url\\whatwg-url-properties.js n=10000 prop="hash" input="dot" -12.87 % *** 3.142510e-34 url\\whatwg-url-properties.js n=10000 prop="hash" input="file" -12.25 % *** 1.737973e-35 url\\whatwg-url-properties.js n=10000 prop="hash" input="idn" -12.61 % *** 3.513764e-31 url\\whatwg-url-properties.js n=10000 prop="hash" input="javascript" 50.86 % *** 1.262411e-51 url\\whatwg-url-properties.js n=10000 prop="hash" input="long" -11.76 % *** 1.310080e-35 url\\whatwg-url-properties.js n=10000 prop="hash" input="percent" -13.48 % *** 6.087931e-33 url\\whatwg-url-properties.js n=10000 prop="hash" input="short" -12.11 % *** 1.362106e-30 url\\whatwg-url-properties.js n=10000 prop="hash" input="ws" -11.87 % *** 1.085072e-38 url\\whatwg-url-properties.js n=10000 prop="host" input="auth" -4.81 % *** 8.595136e-17 url\\whatwg-url-properties.js n=10000 prop="host" input="dot" -4.59 % *** 1.993239e-17 url\\whatwg-url-properties.js n=10000 prop="host" input="file" -5.18 % *** 1.870640e-21 url\\whatwg-url-properties.js n=10000 prop="host" input="idn" -4.32 % *** 3.969293e-17 url\\whatwg-url-properties.js n=10000 prop="host" input="javascript" 38.02 % *** 7.908134e-24 url\\whatwg-url-properties.js n=10000 prop="host" input="long" -3.15 % *** 4.817165e-16 url\\whatwg-url-properties.js n=10000 prop="host" input="percent" -5.10 % *** 2.164275e-21 url\\whatwg-url-properties.js n=10000 prop="host" input="short" -4.08 % *** 1.470347e-16 url\\whatwg-url-properties.js n=10000 prop="host" input="ws" -4.67 % *** 4.359596e-17 url\\whatwg-url-properties.js n=10000 prop="hostname" input="auth" -2.99 % *** 9.807744e-10 url\\whatwg-url-properties.js n=10000 prop="hostname" input="dot" -4.26 % *** 4.912310e-12 url\\whatwg-url-properties.js n=10000 prop="hostname" input="file" -3.11 % *** 6.699793e-07 url\\whatwg-url-properties.js n=10000 prop="hostname" input="idn" -4.22 % *** 3.396294e-13 url\\whatwg-url-properties.js n=10000 prop="hostname" input="javascript" 49.62 % *** 1.981183e-37 url\\whatwg-url-properties.js n=10000 prop="hostname" input="long" -3.80 % *** 1.562894e-10 url\\whatwg-url-properties.js n=10000 prop="hostname" input="percent" -4.51 % *** 1.431079e-15 url\\whatwg-url-properties.js n=10000 prop="hostname" input="short" -3.87 % *** 2.053252e-11 url\\whatwg-url-properties.js n=10000 prop="hostname" input="ws" -3.86 % *** 1.262418e-12 url\\whatwg-url-properties.js n=10000 prop="href" input="auth" -4.79 % *** 4.013623e-14 url\\whatwg-url-properties.js n=10000 prop="href" input="dot" -6.14 % *** 2.150363e-19 url\\whatwg-url-properties.js n=10000 prop="href" input="file" -5.48 % *** 1.590497e-18 url\\whatwg-url-properties.js n=10000 prop="href" input="idn" -5.34 % *** 6.377817e-16 url\\whatwg-url-properties.js n=10000 prop="href" input="javascript" -5.73 % *** 5.289524e-22 url\\whatwg-url-properties.js n=10000 prop="href" input="long" -5.19 % *** 2.087097e-17 url\\whatwg-url-properties.js n=10000 prop="href" input="percent" -5.33 % *** 7.574755e-17 url\\whatwg-url-properties.js n=10000 prop="href" input="short" -5.84 % *** 1.909005e-20 url\\whatwg-url-properties.js n=10000 prop="href" input="ws" -4.79 % *** 3.236116e-16 url\\whatwg-url-properties.js n=10000 prop="origin" input="auth" -7.60 % *** 2.831374e-08 url\\whatwg-url-properties.js n=10000 prop="origin" input="dot" -6.90 % *** 4.798042e-17 url\\whatwg-url-properties.js n=10000 prop="origin" input="file" 6.93 % *** 8.729391e-09 url\\whatwg-url-properties.js n=10000 prop="origin" input="idn" 3.23 % *** 1.238775e-30 url\\whatwg-url-properties.js n=10000 prop="origin" input="javascript" 6.81 % *** 4.992687e-07 url\\whatwg-url-properties.js n=10000 prop="origin" input="long" -8.67 % *** 8.268461e-31 url\\whatwg-url-properties.js n=10000 prop="origin" input="percent" -2.96 % *** 1.995345e-11 url\\whatwg-url-properties.js n=10000 prop="origin" input="short" -9.09 % *** 1.326430e-39 url\\whatwg-url-properties.js n=10000 prop="origin" input="ws" -9.85 % *** 2.241308e-25 url\\whatwg-url-properties.js n=10000 prop="password" input="auth" 18.63 % *** 5.568602e-25 url\\whatwg-url-properties.js n=10000 prop="password" input="dot" 15.84 % *** 9.368072e-31 url\\whatwg-url-properties.js n=10000 prop="password" input="file" 86.69 % *** 1.938197e-34 url\\whatwg-url-properties.js n=10000 prop="password" input="idn" 15.81 % *** 2.129617e-30 url\\whatwg-url-properties.js n=10000 prop="password" input="javascript" 88.89 % *** 2.679697e-64 url\\whatwg-url-properties.js n=10000 prop="password" input="long" 16.81 % *** 5.568713e-29 url\\whatwg-url-properties.js n=10000 prop="password" input="percent" 15.69 % *** 2.482159e-23 url\\whatwg-url-properties.js n=10000 prop="password" input="short" 17.05 % *** 3.539161e-28 url\\whatwg-url-properties.js n=10000 prop="password" input="ws" 15.76 % *** 4.664430e-27 url\\whatwg-url-properties.js n=10000 prop="pathname" input="auth" -12.64 % *** 5.152179e-35 url\\whatwg-url-properties.js n=10000 prop="pathname" input="dot" -9.69 % *** 3.694581e-28 url\\whatwg-url-properties.js n=10000 prop="pathname" input="file" -9.73 % *** 7.444527e-29 url\\whatwg-url-properties.js n=10000 prop="pathname" input="idn" -10.30 % *** 2.487335e-35 url\\whatwg-url-properties.js n=10000 prop="pathname" input="javascript" 15.95 % *** 1.536945e-24 url\\whatwg-url-properties.js n=10000 prop="pathname" input="long" -10.00 % *** 1.407055e-31 url\\whatwg-url-properties.js n=10000 prop="pathname" input="percent" -10.80 % *** 6.089620e-29 url\\whatwg-url-properties.js n=10000 prop="pathname" input="short" -10.44 % *** 1.002774e-29 url\\whatwg-url-properties.js n=10000 prop="pathname" input="ws" -9.63 % *** 1.597101e-32 url\\whatwg-url-properties.js n=10000 prop="port" input="auth" -2.29 % *** 5.943297e-08 url\\whatwg-url-properties.js n=10000 prop="port" input="dot" -3.78 % *** 2.046475e-16 url\\whatwg-url-properties.js n=10000 prop="port" input="file" 69.79 % *** 2.031454e-46 url\\whatwg-url-properties.js n=10000 prop="port" input="idn" -4.19 % *** 1.942649e-15 url\\whatwg-url-properties.js n=10000 prop="port" input="javascript" 71.72 % *** 3.124656e-52 url\\whatwg-url-properties.js n=10000 prop="port" input="long" -4.53 % *** 8.561101e-18 url\\whatwg-url-properties.js n=10000 prop="port" input="percent" -3.07 % *** 4.260172e-12 url\\whatwg-url-properties.js n=10000 prop="port" input="short" -3.25 % *** 5.006745e-16 url\\whatwg-url-properties.js n=10000 prop="port" input="ws" -4.20 % *** 3.139579e-16 url\\whatwg-url-properties.js n=10000 prop="protocol" input="auth" -7.56 % *** 6.618186e-18 url\\whatwg-url-properties.js n=10000 prop="protocol" input="dot" -6.44 % *** 2.919348e-14 url\\whatwg-url-properties.js n=10000 prop="protocol" input="file" -6.11 % *** 1.796060e-16 url\\whatwg-url-properties.js n=10000 prop="protocol" input="idn" -6.27 % *** 6.620996e-15 url\\whatwg-url-properties.js n=10000 prop="protocol" input="javascript" -4.14 % *** 3.200331e-11 url\\whatwg-url-properties.js n=10000 prop="protocol" input="long" -4.12 % *** 2.973464e-04 url\\whatwg-url-properties.js n=10000 prop="protocol" input="percent" -6.37 % *** 3.744318e-16 url\\whatwg-url-properties.js n=10000 prop="protocol" input="short" -5.61 % *** 4.764372e-13 url\\whatwg-url-properties.js n=10000 prop="protocol" input="ws" -4.82 % *** 5.709715e-14 url\\whatwg-url-properties.js n=10000 prop="search" input="auth" 3.56 % *** 2.782816e-08 url\\whatwg-url-properties.js n=10000 prop="search" input="dot" 2.82 % *** 2.137876e-07 url\\whatwg-url-properties.js n=10000 prop="search" input="file" 1.59 % 7.033034e-02 url\\whatwg-url-properties.js n=10000 prop="search" input="idn" 1.50 % ** 9.755151e-03 url\\whatwg-url-properties.js n=10000 prop="search" input="javascript" 1.18 % 7.517150e-02 url\\whatwg-url-properties.js n=10000 prop="search" input="long" 3.28 % *** 6.054618e-07 url\\whatwg-url-properties.js n=10000 prop="search" input="percent" 3.34 % *** 3.786630e-09 url\\whatwg-url-properties.js n=10000 prop="search" input="short" 2.76 % *** 1.575200e-04 url\\whatwg-url-properties.js n=10000 prop="search" input="ws" 2.06 % ** 2.509838e-03 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="auth" 170.44 % *** 4.234964e-71 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="dot" 164.03 % *** 9.941064e-68 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="file" 166.02 % *** 2.458205e-62 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="idn" 165.76 % *** 2.372835e-40 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="javascript" 167.64 % *** 2.012943e-55 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="long" 163.47 % *** 1.100228e-36 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="percent" 162.82 % *** 1.198895e-41 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="short" 170.57 % *** 2.259498e-74 url\\whatwg-url-properties.js n=10000 prop="searchParams" input="ws" 165.36 % *** 5.683900e-46 url\\whatwg-url-properties.js n=10000 prop="username" input="auth" 19.15 % *** 2.575329e-34 url\\whatwg-url-properties.js n=10000 prop="username" input="dot" 17.37 % *** 3.630928e-27 url\\whatwg-url-properties.js n=10000 prop="username" input="file" 83.67 % *** 6.575456e-46 url\\whatwg-url-properties.js n=10000 prop="username" input="idn" 17.98 % *** 5.385188e-33 url\\whatwg-url-properties.js n=10000 prop="username" input="javascript" 82.92 % *** 3.592966e-35 url\\whatwg-url-properties.js n=10000 prop="username" input="long" 18.19 % *** 2.593662e-36 url\\whatwg-url-properties.js n=10000 prop="username" input="percent" 18.24 % *** 8.653417e-39 url\\whatwg-url-properties.js n=10000 prop="username" input="short" 15.88 % *** 5.294615e-27 url\\whatwg-url-properties.js n=10000 prop="username" input="ws" 17.22 % *** 6.998943e-27 ```
util ``` improvement confidence p.value util\\format.js type="no-replace" n=1000000 3.52 % *** 2.300325e-20 util\\format.js type="number" n=1000000 -72.27 % *** 1.272147e-49 util\\format.js type="object" n=1000000 -31.42 % *** 6.317101e-45 util\\format.js type="string" n=1000000 -72.66 % *** 8.318604e-55 util\\format.js type="unknown" n=1000000 -65.93 % *** 5.048714e-92 util\\inspect-proxy.js n=1000000 v=1 -0.82 % *** 8.354899e-04 util\\inspect-proxy.js n=1000000 v=2 0.43 % 1.797406e-01 util\\inspect.js n=5000000 4.30 % *** 3.568230e-27 util\\normalize-encoding.js n=100000 input="" -57.84 % *** 5.757415e-36 util\\normalize-encoding.js n=100000 input="[]" -8.83 % *** 3.635484e-21 util\\normalize-encoding.js n=100000 input="1" -20.57 % *** 3.098413e-44 util\\normalize-encoding.js n=100000 input="base64" -36.86 % *** 4.703203e-60 util\\normalize-encoding.js n=100000 input="BASE64" -31.97 % *** 5.454870e-58 util\\normalize-encoding.js n=100000 input="binary" -38.93 % *** 2.731996e-35 util\\normalize-encoding.js n=100000 input="BINARY" -32.30 % *** 1.343991e-45 util\\normalize-encoding.js n=100000 input="false" -59.39 % *** 1.940626e-48 util\\normalize-encoding.js n=100000 input="foo" -33.22 % *** 4.522212e-59 util\\normalize-encoding.js n=100000 input="group_common" -33.62 % *** 1.910655e-43 util\\normalize-encoding.js n=100000 input="group_misc" -18.14 % *** 4.468980e-41 util\\normalize-encoding.js n=100000 input="group_uncommon" -38.04 % *** 4.374311e-40 util\\normalize-encoding.js n=100000 input="group_upper" -19.29 % *** 1.042609e-25 util\\normalize-encoding.js n=100000 input="hex" -35.69 % *** 1.748319e-58 util\\normalize-encoding.js n=100000 input="HEX" -32.11 % *** 5.283979e-60 util\\normalize-encoding.js n=100000 input="latin1" -44.70 % *** 6.491027e-53 util\\normalize-encoding.js n=100000 input="ucs2" -45.57 % *** 9.186528e-50 util\\normalize-encoding.js n=100000 input="UCS2" -37.59 % *** 9.180225e-45 util\\normalize-encoding.js n=100000 input="undefined" -59.37 % *** 4.134435e-38 util\\normalize-encoding.js n=100000 input="utf-16le" -44.90 % *** 7.891071e-50 util\\normalize-encoding.js n=100000 input="UTF-16LE" -35.28 % *** 3.941014e-48 util\\normalize-encoding.js n=100000 input="utf-8" -49.98 % *** 2.161624e-54 util\\normalize-encoding.js n=100000 input="utF-8" -33.75 % *** 9.738238e-48 util\\normalize-encoding.js n=100000 input="uTf-8" -33.67 % *** 1.084618e-36 util\\normalize-encoding.js n=100000 input="UTF-8" -35.61 % *** 9.109863e-50 util\\normalize-encoding.js n=100000 input="utf16le" -46.45 % *** 1.365423e-44 util\\normalize-encoding.js n=100000 input="UTF16LE" -34.85 % *** 1.335203e-45 util\\normalize-encoding.js n=100000 input="utf8" -50.38 % *** 1.338962e-58 util\\normalize-encoding.js n=100000 input="Utf8" -37.45 % *** 1.124196e-53 util\\normalize-encoding.js n=100000 input="UTF8" -38.18 % *** 2.279434e-58 ```
vm ``` improvement confidence p.value vm/run-in-context.js withSigintListener=0 breakOnSigint=0 n=200000 -1.69 % 1.722634e-01 vm/run-in-context.js withSigintListener=0 breakOnSigint=1 n=200000 0.06 % 9.724491e-01 vm/run-in-context.js withSigintListener=1 breakOnSigint=0 n=200000 -3.25 % *** 9.922300e-04 vm/run-in-context.js withSigintListener=1 breakOnSigint=1 n=200000 0.36 % 7.734769e-01 vm/run-in-this-context.js withSigintListener=0 breakOnSigint=0 n=200000 -3.81 % *** 1.130806e-05 vm/run-in-this-context.js withSigintListener=0 breakOnSigint=1 n=200000 -1.43 % 2.500253e-01 vm/run-in-this-context.js withSigintListener=1 breakOnSigint=0 n=200000 -4.65 % *** 4.163715e-08 vm/run-in-this-context.js withSigintListener=1 breakOnSigint=1 n=200000 0.77 % 5.442813e-01 ```
vm (windows) ``` improvement confidence p.value vm\\run-in-context.js withSigintListener=0 breakOnSigint=0 n=1 -0.96 % 5.105984e-01 vm\\run-in-context.js withSigintListener=0 breakOnSigint=1 n=1 -4.87 % * 4.596951e-02 vm\\run-in-context.js withSigintListener=1 breakOnSigint=0 n=1 3.44 % 1.442365e-01 vm\\run-in-context.js withSigintListener=1 breakOnSigint=1 n=1 14.86 % *** 1.086548e-06 vm\\run-in-this-context.js withSigintListener=0 breakOnSigint=0 n=1 -4.59 % *** 6.585714e-05 vm\\run-in-this-context.js withSigintListener=0 breakOnSigint=1 n=1 70.57 % *** 1.027894e-19 vm\\run-in-this-context.js withSigintListener=1 breakOnSigint=0 n=1 -5.60 % *** 2.006588e-07 vm\\run-in-this-context.js withSigintListener=1 breakOnSigint=1 n=1 33.06 % *** 6.418536e-23 ```

I draw your attention particularly to buffers, events, http (!!), querystring, streams, string_decoder, url, util where we have significant losses. These all go to the core competences of Node and you can imagine the articles and blog posts about how far 8.0 LTS regressed.

We do have a couple of wins, es and timers in particular. The gains in es point the way toward what TurboFanScript might look like, or perhaps these are just doing a bit of catch-up on existing ES3/5 perf.

There is https://benchmarking.nodejs.org/, but we have a long way to go before it helps answer these kinds of questions. Currently they are mostly microbenchmarks too, plus AcmeAir (which is a questionable representation of real-world Node IMO) and then there's an Octane benchmark down the bottom where master has a non-trivial dip over 8.x. @nodejs/benchmarking may be able to speak with more authority to the representative nature of all those graphs though.

So, the basic question is what to do with 5.9+? We could go ahead and put it in 8.x. We could wait till 6.0 or 6.1 to do it. We could defer the upgrade till 9.x. But how do we go about answering this question given the complex dependencies (mainly re LTS)?

My personal inclination is to defer till 9.x so we have 2 full cycles to pick up the pieces before an LTS (similar strategy that Ubuntu has pulled off with its major reworks and component replacements—conservative in the LTS branches to lessen potential breakage and make support easier, then liberal in the in-between).

Can others please present alternative proposals with justifications and/or framing?

rvagg commented 7 years ago

/cc @nodejs/ctc @nodejs/v8 @nodejs/lts

mcollina commented 7 years ago

@rvagg we tested that same build on some private application code. Load testing that turned out to give 5-15% more throughput overall, even with all those regressions in the microbenchmarks. Even if streams microbenchmarks are lower, I see better throughput on some more realistic streams tests.

I would note that our microbenchmarks are more written for crankshaft.js than our codebase.

I think if we support v8 5.9, we might have to backport some of the performance regressions for which later v8 releases has fixes. As an example https://github.com/v8/v8/commit/6d38f89d262a05208002648489daa4ddce44020e (which is be in 6.0) solves a very bad regression in the through module. I guess there are others. We would need to have a strategy to float those fixes over time. I worked with @bmeurer to solve that issue, and I think we can ask for similar fixes over time if there are significant regressions that we are noticing.

Given that v8 5.9 has been released, can we just have a build done with that, so we can check again?

rvagg commented 7 years ago

Thanks for the data point @mcollina, this is interesting.

https://nodejs.org/download/nightly/ has builds for master (right down the bottom) which has 5.9 in it. https://nodejs.org/download/v8-canary/ has 6.1 in it if you want to reach further ahead.

fhinkel commented 7 years ago

We had looked into performance and saw only improvements from 5.8 to 5.9 /cc @psmarshall

mhdawson commented 7 years ago

As per the discussion in the thread for the CTC meeting I agree that we should have something which shows an assessment of the data (micro benchmarks, nightly runs, other data) to support whether it should be pulled in or not.

I think earlier suggestion from @MylesBorins (possibly in the LTS WG) was that we might want to skip 5.9 and wait for 6.0 before updating Node version 8. The rational being that 6.0 will have lots of fixes (performance and otherwise) and we don't want to go LTS with V8 5.9, it should either be V5.8 or 6.0.

rvagg commented 7 years ago

If someone wants to spend some time on this, maybe a good way to run the benchmarks would be to compare 8.1.0 with the commits in the 8.2.0 proposal, that would remove all the extra noise.

Also I believe that most of the benchmarks above are run on Windows. I don't know if it would make much difference but Linux is arguably more important as a deployment platform for Node (yes we have a very high number of Windows users but it's just not used for prod deployments as much).

addaleax commented 7 years ago

@rvagg That’s one of the reasons I’d like to see an 8.2.0 RC with V8 5.9 – it would make it a bit easier for people to check how their own applications perform. (And to answer your question in the release proposal thread: Yes, of course we can back out those changes if we agree that that’s the best course of action.)

psmarshall commented 7 years ago

I looked into the benchmarks mentioned above, I'll write an overview here and get the data into a better format for more details soon.

A lot of the regressions we saw happened to rely on some optimization that crankshaft had, and turbofan didn't. Because these are microbenchmarks, we saw that missing one optimization can tank a whole benchmark. In larger benchmarks, we might be a little bit slower here, and a little bit faster there, but we mostly see overall performance gains in the range of 5-15% like @mcollina mentioned.

The microbenchmarks do give us useful information - they point out that one particular thing didn't work as fast as it did in crankshaft for some reason. e.g. In the url benchmarks we saw -40% to -70% regressions. This was due to missing inlining which is now fixed (see https://github.com/v8/v8/commit/23ee74310b2d1aab30e1be3ae1fdba8850357734). These types of fixes also gave noticeable performance boosts on other, non-node benchmarks, so that's an indication that they are useful, and not just overfitting to the benchmark.

http (one of the worst regressions) is basically entirely down to handling of String charCodeAt, which crankshaft inlined aggressively (tracking bug). Same with path.

More data to come tomorrow.

Trott commented 7 years ago

this suggests to me that we're not going to get much upstream help in reigning in perf problems

@rvagg When we had the last CTC/V8 meeting (or at least the last one I was able to go to), it was the V8 team that both proposed/organized the meeting and brought up the issue of CrankshiftScript in our code. (I think it was even one of them--Benedikt, maybe?--that coined the term.) They seemed very interested/invested in helping us figure out how to get from our current codebase to something that would play as nice or better with Turbofan. I could be wrong, but I think we're getting a lot of help from them already, even if it may not be as visible as we might expect. And I think requests for more help in specific areas would not fall on deaf ears.

Apologies in advance if it sounds like I'm reading something into your comment that isn't there. I've personally been extremely pleased and grateful about the V8 team's assistance with Node.js for a long time now and so I'm taking the opportunity to express that.

And none of this takes away from the main issue of course, which is that the task is enormous and fraught with "moving lever A fixes spring B but causes button C to stop working" type perils. We should plan and discuss publicly, like you're doing here.

rvagg commented 7 years ago

Apologies in advance if it sounds like I'm reading something into your comment that isn't there.

Sorry for not being absolutely clear—I agree that the fruit that the Node/V8 relationship is bearing is impressive and mutually valuable and I'm not trying to knock that, just that it seems to me from looking from the outside that the way we're going to have to tackle the problem is by changing things on our end to better adapt to V8 rather than expecting V8 to adapt to our overoptimised codebase. I also think that's perfectly reasonable fwiw because it's not as if our codebase is representative in any way of typical Node.js, nor is it idiomatic ES3/5, it really is CrankshaftScript and that's a dead reality now. So we're in for pain either way and it's exactly the whack-a-mole problem you mentioned that I'm most afraid of because it's bitten us so hard multiple times in the past and we now need to do it on a scale that we've never attempted before.

I hope I'm not being interpreted as being willfully obstructionist here, I'm really only concerned about the issues I laid out in the OP. If the answer is simply that our benchmarks, or the particular runs of the benchmarks taken from the old 5.9 candidate, don't match a reality that we think matters then we significantly simplify this issue.

8.2.0-rc.1 coming soon, see https://github.com/nodejs/node/pull/13744#issuecomment-310228102

rvagg commented 7 years ago

@not-an-aardvark https://github.com/nodejs/node/pull/13744#issuecomment-310288774:

If it's useful as a datapoint: Node 8.2.0-rc.1 improves the end-to-end performance of ESLint by about 7% compared to Node 8.1.2 in both our single-file and multi-file benchmarks.

We really are overdue for a proper representative benchmark suite.

zbjornson commented 7 years ago

Per @rvagg's broadcast on twitter, here's a set of benchmarks run on 7.10.0 and 8.2.0-rc.1 (all values are ops/sec):

image

I can explain what the benchmarks are if anyone's interested, but it sounds like the goal is just to see how some real world applications do.

Some of the most interesting cases are the four that start with "QS" and the five that start with "Clamp" -- those are all different implementations of the same functions that we tested during development before picking the fastest to actually ship. For QS the fastest implementation is different between v8 versions. Clamp is within margin of error.

These are all math-heavy functions and I think they would all run in d8. That is, these shouldn't be reflective of node API performance. I haven't looked at the generated assembly yet, and I have limited time to do so in the next few weeks if it would be helpful.


BTW, from the buffer-swap.js benchmarks in the OP, only the ones with len=128 runs in JS; the others are CPP. (And only the ones in JS have a perf degradation.) I think you're also missing the fs benchmarks from the original thread.

matthargett commented 7 years ago

I'd love to see the CrankshaftScript replaced with more idiomatic JS (or C++) to enable better performance possibilities from alternative JS runtimes like ChakraCore (used in node-chakracore) and SpiderMonkey (spidernode). RIght now, I don't think the Nodejs ecosystem isn't as strong as it could be due to this coupling between Node.js and v8 that effectively limits real-world deployable innovations (memory use, requests per second per watt, etc) versus browser-side JS. To echo folks above, I'd really like to see some hot-path aspects of this corrected for the next LTS.

@rvagg for my purposes, AcmeAir, SSR benchmarks, and Octane are a reasonable iron triangle for community-run CI. Between the raw benchmark times+memory use, and monitoring/pinning JIT stats (bailouts, re-JITs, etc), I think many of the app-level regression cases for my context would be caught.

vsemozhetbyt commented 7 years ago

(FWIW, besides fs, also missing in the copy from the old results: crypto, dgram, misc, and path).

vsemozhetbyt commented 7 years ago

The old data seems really outdated. I've just run the array benchmarks (still on Windows), that initially cause severe concerns:

https://github.com/nodejs/node/issues/11851#issuecomment-286505219 https://github.com/nodejs/node/issues/11851#issuecomment-286524714

The pros and cons seem drastically different now (8.1.2 vs 8.2.0-rc-1):

Label (click me): ```console improvement confidence p.value arrays\\var-int.js n=25 type="Array" -1.38 % 0.1449170222 arrays\\var-int.js n=25 type="Buffer" -3.60 % *** 0.0002448808 arrays\\var-int.js n=25 type="Float32Array" 0.51 % 0.6640802009 arrays\\var-int.js n=25 type="Float64Array" 0.33 % 0.7028409025 arrays\\var-int.js n=25 type="Int16Array" -1.35 % 0.1832062399 arrays\\var-int.js n=25 type="Int32Array" -2.18 % 0.0772578995 arrays\\var-int.js n=25 type="Int8Array" -2.88 % *** 0.0006455217 arrays\\var-int.js n=25 type="Uint16Array" -3.62 % *** 0.0003638146 arrays\\var-int.js n=25 type="Uint32Array" -1.99 % 0.1343990743 arrays\\var-int.js n=25 type="Uint8Array" -3.08 % ** 0.0074982413 improvement confidence p.value arrays\\zero-float.js n=25 type="Array" 18.03 % *** 7.646284e-37 arrays\\zero-float.js n=25 type="Buffer" 21.01 % *** 7.406994e-40 arrays\\zero-float.js n=25 type="Float32Array" 20.62 % *** 1.541712e-31 arrays\\zero-float.js n=25 type="Float64Array" -16.98 % *** 7.101956e-24 arrays\\zero-float.js n=25 type="Int16Array" -3.52 % *** 9.136824e-05 arrays\\zero-float.js n=25 type="Int32Array" -0.24 % 7.432021e-01 arrays\\zero-float.js n=25 type="Int8Array" 19.16 % *** 3.006861e-29 arrays\\zero-float.js n=25 type="Uint16Array" -3.33 % *** 1.387510e-06 arrays\\zero-float.js n=25 type="Uint32Array" -1.14 % 1.474507e-01 arrays\\zero-float.js n=25 type="Uint8Array" 20.62 % *** 1.324800e-28 improvement confidence p.value arrays\\zero-int.js n=25 type="Array" 16.56 % *** 1.737679e-21 arrays\\zero-int.js n=25 type="Buffer" 20.61 % *** 7.972851e-34 arrays\\zero-int.js n=25 type="Float32Array" 20.84 % *** 7.841709e-36 arrays\\zero-int.js n=25 type="Float64Array" -16.23 % *** 8.517111e-22 arrays\\zero-int.js n=25 type="Int16Array" -2.22 % 5.165204e-02 arrays\\zero-int.js n=25 type="Int32Array" 0.96 % 1.183342e-01 arrays\\zero-int.js n=25 type="Int8Array" 19.63 % *** 8.789434e-33 arrays\\zero-int.js n=25 type="Uint16Array" -2.96 % ** 5.486944e-03 arrays\\zero-int.js n=25 type="Uint32Array" 0.42 % 4.711222e-01 arrays\\zero-int.js n=25 type="Uint8Array" 21.33 % *** 8.041571e-33 ```

vsemozhetbyt commented 7 years ago

@bmeurer, @nodejs/v8 Can you explain the Float64Array degradation (see the comment above) in V8 5.9 with these benchmarks?

https://github.com/nodejs/node/blob/master/benchmark/arrays/zero-float.js https://github.com/nodejs/node/blob/master/benchmark/arrays/zero-int.js

watson commented 7 years ago

The Opbeat test suite is seeing significant performance degradations on Node 8. I've been trying to debug it for the last two weeks, and have found that one of the major victims seem to be Bluebird. I'd love to provide some benchmarks here if anyone are interested? (and in that case, what type of benchmarks would you prefer?)

addaleax commented 7 years ago

@watson That’s definitely something to look into, but to clarify, you are not talking about the 8.2.0 RC, but all versions of Node 8?

targos commented 7 years ago

@watson Node 8 currently has V8 5.8. It would be interesting to compare that with 8.2.0-rc-1. Is it possible to test a release candidate on travis?

watson commented 7 years ago

@addaleax @targos Ah sorry, no. I've only tested it on Node 8.1.2. But I'd be happy to see if the problem is also on 8.2.0-rc-1. I don't think that's easy to do on Travis as it's using nvm which I don't think support RC releases. But I should be able to get the same results locally

mgol commented 7 years ago

@targos Travis uses nvm to manage Node versions and nvm doesn't support RCs yet.

But you can download the binary from the site during the build.

EDIT: Simultaneous comment. :)

SimenB commented 7 years ago

That's wrong, nvm supports rc.

$ nvm install rc
Downloading and installing node v8.2.0-rc.1...
Downloading https://nodejs.org/download/rc//v8.2.0-rc.1/node-v8.2.0-rc.1-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v8.2.0-rc.1 (npm v5.0.3)
rc -> v8.2.0-rc.1
Clearing mirror cache...
Done!

/cc @ljharb maybe close out creationix/nvm#779

mgol commented 7 years ago

@SimenB Where did you get that? I have the latest stable nvm version (0.33.2) and it doesn't work there.

$ nvm install rc        
Version 'rc' not found - try `nvm ls-remote` to browse available versions.
watson commented 7 years ago

@SimenB From Travis:

$ nvm install rc
Version 'rc' not found - try `nvm ls-remote` to browse available versions.
SimenB commented 7 years ago

Huh, lemme check how that works for me...

EDIT: Ah, from zsh-nvm. https://github.com/lukechilds/zsh-nvm. @lukechilds upstream it? ❤️

lukechilds commented 7 years ago

@SimenB @mgol That's a feature that zsh-nvm adds to nvm. It's not available in nvm on it's own.

lukechilds commented 7 years ago

@SimenB Currently very busy working on something else, but it's on my list.

ljharb commented 7 years ago

nvm absolutely does not yet support RCs; and popularizing hacks to make it work will only make the problem worse - when I do support RCs, everyone who's tried to hack in that support will likely have their installed RC versions break.

mhdawson commented 7 years ago

@watson, when you say provide some benchmarks, I'd be interested to know what you had in mind. Are they micro-benchmarks are more system level. The Benchmarking WG is still looking for more system level benchmarks to add to the nightly runs. The goal is to cover the main Node.js uses cases and there are still many gaps.

matthargett commented 7 years ago

@mhdawson you didn't ask me, but for my purposes across several companies that deployed nodejs to production in both embedded (ARM SoC) and microservices (deployed to AWS and Azure) environments over the last ~5 years:

joyeecheung commented 7 years ago

I've run the egg benchmark (benchmark for the egg framework) with v7.x, v8.x, 2.0-rc, nightly and v8 canary: https://joyeecheung.github.io/egg-benchmark/plot/

All cases are either generator-heavy or async/await-heavy. RC numbers look pretty good. They are not exactly production-level cases but surely more complicated than micro-benchmarks.

watson commented 7 years ago

@mhdawson I currently don't have any benchmarks as such, but want to add some to our test-suite so that I can easily see how changes I make to our instrumentation code affects the performance of our customers apps. Today I just run one-off tests once in a while.

The degraded performance I've seen on Node.js 8.1.2, is in our general test-suite, where we test all aspects of our code, from the core API, to custom tests verifying that each of the 3rd party modules we instrument still work as expected after our instrumentation have been applied. So the degraded performance might as well be in one of those 3rd party modules and doesn't necessarily have anything to do with our code.

If my numbers can be helpful in any way, I'll be happy to create a proper benchmark test. Either with this issue in mind, or in a more general purpose way for the Benchmarking WG 😃

psmarshall commented 7 years ago

In http check_invalid_header_char and check_is_http_token, the string passed to the benchmark is is a result of a regex match in Benchmark.prototype._parseArgs, which results in a split string type (basically, a string that is represented as a pointer into an existing string plus a length). These split strings aren't supported in the inlined version of StringCharCodeAt, so we call into the builtin instead. Basically these benchmarks are dominated by the time it takes to perform StringCharCodeAt. They don't seem to be a good measure of performance either, e.g. if you pass a non-split string, they are faster with turbofan.

The path basename and dirname benchmarks suffer the same problem.

events seems to have improved since last measurement, I get the following:

events/ee-listeners-many.js: n=5000000,                46.73%
events/ee-add-remove.js: n=250000,                     20.28%
events/ee-listeners.js: n=5000000,                     80.46%
events/ee-once.js: n=20000000,                         16.28%
events/ee-emit.js: n=2000000,                         -16.64%
events/ee-emit-multi-args.js: n=2000000,              -14.21%
events/ee-listener-count-on-prototype.js: n=50000000, 184.55%
mcollina commented 7 years ago

You can get a non-split string by passing them through the Number(str) function. Il giorno lun 26 giu 2017 alle 15:58 Peter Marshall < notifications@github.com> ha scritto:

In http check_invalid_header_char and check_is_http_token, the string passed to the benchmark is is a result of a regex match in Benchmark.prototype._parseArgs, which results in a split string type (basically, a string that is represented as a pointer into an existing string plus a length). These split strings aren't supported in the inlined version of StringCharCodeAt, so we call into the builtin instead. Basically these benchmarks are dominated by the time it takes to perform StringCharCodeAt. They don't seem to be a good measure of performance either, e.g. if you pass a non-split string, they are faster with turbofan.

The path basename and dirname benchmarks suffer the same problem.

events seems to have improved since last measurement, I get the following:

events/ee-listeners-many.js: n=5000000, 46.73% events/ee-add-remove.js: n=250000, 20.28% events/ee-listeners.js: n=5000000, 80.46% events/ee-once.js: n=20000000, 16.28% events/ee-emit.js: n=2000000, -16.64% events/ee-emit-multi-args.js: n=2000000, -14.21% events/ee-listener-count-on-prototype.js: n=50000000, 184.55%

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nodejs/CTC/issues/146#issuecomment-311067173, or mute the thread https://github.com/notifications/unsubscribe-auth/AADL4wk23ccyYUfU6wsDHOXjuOoVDAiSks5sH7j-gaJpZM4OAi0Q .

targos commented 7 years ago

@mcollina do you mean the String(str) function?

addaleax commented 7 years ago

@targos I think @mcollina is talking about something like https://github.com/davidmarkclements/flatstr#how-does-it-work (calling Number(str) has the side effect of flattening the string into simple linear storage).

psmarshall commented 7 years ago

I think in real apps we would likely see all sorts of different internal V8 string types, meaning the inlined fastpath isn't that important anyway

mhdawson commented 7 years ago

@watson I think a benchmark that shows we are not regressing performance of APMs would be useful. It would need run run in a reasonable amount of time (say 30 mins or less) and generate a small number of values (say 2 ?).

mhdawson commented 7 years ago

@matthargett thanks for the input. In terms of the SSR benchmarks they look more front end, do they run directly on Node.js as well ?

rvagg commented 7 years ago

Can we get someone to help drive this through to resolution? I can't do it unfortunately but it needs someone, or some people, who are interested enough in seeing an answer come out of this to make sure that the CTC has either enough data, or solid enough recommendations from trusted parties, in order to make a decision. The alternative is to make a implicit decision for the negative by letting this thread go stale while we wait for Node 9, and even though I'd personally be comfortable with that I don't think it's responsible decision making on our part!

rvagg commented 7 years ago

https://twitter.com/bmeurer/status/880246204701036544

screenshot_20170629-192219

targos commented 7 years ago

I propose that we don't update V8 to 5.9 on v8.x and wait for V8 6.0. It should be stable by the end of July. It is currently shipped in Chrome beta and the API is frozen. I would be in favor of updating our master branch earlier so that we can focus on performance issues with that version and cherry-pick fixes from 6.1. @fhinkel @bmeurer what do you think?

addaleax commented 7 years ago

I wouldn’t say that we are in that much of a hurry anyway, at the very least we should wait until after the July security release, and until https://github.com/nodejs/node/issues/13804 is resolved.

mcollina commented 7 years ago

Can we make V8 6.0 have the same ABI of 5.8?

targos commented 7 years ago

@mcollina 5.8 was patched on v8.x to have the same ABI as 6.0.

mcollina commented 7 years ago

I am +1 on updating early and then cherry-picking fixes from 6.1. I would like to make mid-August as our deadline for a release with turbofan. That will give us a couple of months of testing before 8 become LTS. Any later than that, and we might have to stick with V8 5.8.

I'm also ok in releasing with V8 5.9, and then migrate to 6.0 at the end of July. A lot of issues will not come out unless we do a full release. The sooner we start the better.

I agree with @bmeurer that it is probably better to have V8 6.0 (plus cherry-picks) when node 8 goes LTS.

jasnell commented 7 years ago

I'm good with skipping 5.9 on 8.x and jumping to 6.0 no later than mid august.

bmeurer commented 7 years ago

I generally support this idea. But it would be nice to get early accessible builds of Node 8 with 6.0 then. Can you maybe do like one or two RCs with 6.0 (which is pretty much frozen at this point), so people can test their apps and we can figure out which cherry-picks we need from 6.1 and what we need to to fix on 6.1 still?

bmeurer commented 7 years ago

Also it'd be awesome to get an agreement on some kind of standard benchmark suite to reduce uncertainty somewhat in these situations. Like "don't significantly regress on AcmeAir, JetStream, ARES-6, TypeScript compiling itself and Webpack bundling some big app"?

targos commented 7 years ago

I opened https://github.com/nodejs/node/issues/14004 to track the update to V8 6.0.