Skip to content

lib: revert primordials in a hot path

As part of https://github.com/nodejs/node/issues/37937, I have been tracking all regressions that happened in the HTTP response hot path. I have strong evidence that a part of that is caused by the introduction of primordials through our codebase.

I recommend we stop "primordial" activities and we benchmark things extensively before adding them. Specifically there have been a few cases where PRs landed without benchamrks or without benchmarking the hot path where those are going to be used. Quite a few of those areas touched by this PR are extremely hot paths.

                                                                                                 confidence improvement accuracy (*)   (**)   (***)
http/bench-parser.jsn=100000 len=16                                                                              0.10 %       ±1.14% ±1.52%  ±1.98%
http/bench-parser.jsn=100000 len=32                                                                             -0.17 %       ±0.73% ±0.97%  ±1.27%
http/bench-parser.jsn=100000 len=4                                                                               0.12 %       ±0.82% ±1.09%  ±1.42%
http/bench-parser.jsn=100000 len=8                                                                               0.49 %       ±0.93% ±1.24%  ±1.62%
http/check_invalid_header_char.jsn=1000000 input=''                                                             -0.16 %       ±0.50% ±0.67%  ±0.87%
http/check_invalid_header_char.jsn=1000000 input='\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tFoo bar baz'                     0.17 %       ±0.57% ±0.76%  ±1.00%
http/check_invalid_header_char.jsn=1000000 input='\\x7F'                                                         0.34 %       ±0.51% ±0.68%  ±0.89%
http/check_invalid_header_char.jsn=1000000 input='1'                                                             0.04 %       ±0.54% ±0.71%  ±0.93%
http/check_invalid_header_char.jsn=1000000 input='20091'                                                  *      0.56 %       ±0.47% ±0.62%  ±0.81%
http/check_invalid_header_char.jsn=1000000 input='close'                                                 **      0.65 %       ±0.44% ±0.59%  ±0.76%
http/check_invalid_header_char.jsn=1000000 input='en-US'                                                         0.22 %       ±0.46% ±0.62%  ±0.81%
http/check_invalid_header_char.jsn=1000000 input='foo\\nbar'                                                     0.02 %       ±0.46% ±0.61%  ±0.80%
http/check_invalid_header_char.jsn=1000000 input='group_acmeair'                                                -0.39 %       ±0.59% ±0.78%  ±1.03%
http/check_invalid_header_char.jsn=1000000 input='gzip'                                                          0.37 %       ±0.42% ±0.56%  ±0.73%
http/check_invalid_header_char.jsn=1000000 input='keep-alive'                                                    0.23 %       ±0.42% ±0.55%  ±0.72%
http/check_invalid_header_char.jsn=1000000 input='LONG_AND_INVALID'                                             -0.08 %       ±0.17% ±0.22%  ±0.29%
http/check_invalid_header_char.jsn=1000000 input='private'                                                       1.58 %       ±2.31% ±3.08%  ±4.02%
http/check_invalid_header_char.jsn=1000000 input='SAMEORIGIN'                                                    1.61 %       ±3.11% ±4.18%  ±5.54%
http/check_invalid_header_char.jsn=1000000 input='Sat, 07 May 2016 16:54:48 GMT'                                -1.24 %       ±1.65% ±2.20%  ±2.87%
http/check_invalid_header_char.jsn=1000000 input='text/html; charset=utf-8'                                      2.21 %       ±2.36% ±3.16%  ±4.15%
http/check_invalid_header_char.jsn=1000000 input='text/plain'                                                   -1.17 %       ±3.07% ±4.14%  ±5.49%
http/check_invalid_header_char.jsn=1000000 input='中文呢'                                                       -0.08 %       ±0.46% ±0.61%  ±0.80%
http/check_is_http_token.jsn=1000000 key=':'                                                                    -0.20 %       ±0.53% ±0.70%  ±0.92%
http/check_is_http_token.jsn=1000000 key=':alternate-protocol'                                           **      0.75 %       ±0.46% ±0.61%  ±0.79%
http/check_is_http_token.jsn=1000000 key='((((())))'                                                             0.26 %       ±0.55% ±0.73%  ±0.95%
http/check_is_http_token.jsn=1000000 key='@@'                                                                    0.22 %       ±0.48% ±0.64%  ±0.83%
http/check_is_http_token.jsn=1000000 key='Accept-Ranges'                                                         0.01 %       ±0.37% ±0.50%  ±0.65%
http/check_is_http_token.jsn=1000000 key='alt-svc'                                                               0.08 %       ±0.45% ±0.59%  ±0.77%
http/check_is_http_token.jsn=1000000 key='alternate-protocol:'                                                   0.25 %       ±0.26% ±0.34%  ±0.45%
http/check_is_http_token.jsn=1000000 key='alternate-protocol'                                                    0.21 %       ±0.31% ±0.41%  ±0.53%
http/check_is_http_token.jsn=1000000 key='Cache-Control'                                                         0.01 %       ±0.42% ±0.56%  ±0.73%
http/check_is_http_token.jsn=1000000 key='Connection'                                                            0.21 %       ±0.29% ±0.39%  ±0.50%
http/check_is_http_token.jsn=1000000 key='Content-Encoding'                                                      0.16 %       ±0.42% ±0.55%  ±0.72%
http/check_is_http_token.jsn=1000000 key='content-length'                                                        0.22 %       ±0.31% ±0.41%  ±0.53%
http/check_is_http_token.jsn=1000000 key='Content-Location'                                                      0.14 %       ±0.35% ±0.47%  ±0.61%
http/check_is_http_token.jsn=1000000 key='content-type'                                                          0.13 %       ±0.37% ±0.49%  ±0.64%
http/check_is_http_token.jsn=1000000 key='Content-Type'                                                          0.21 %       ±0.34% ±0.46%  ±0.59%
http/check_is_http_token.jsn=1000000 key='date'                                                                  0.07 %       ±0.48% ±0.64%  ±0.84%
http/check_is_http_token.jsn=1000000 key='ETag'                                                                  0.22 %       ±0.40% ±0.53%  ±0.70%
http/check_is_http_token.jsn=1000000 key='Expires'                                                              -0.20 %       ±0.52% ±0.69%  ±0.90%
http/check_is_http_token.jsn=1000000 key='Keep-Alive'                                                           -0.17 %       ±0.32% ±0.42%  ±0.55%
http/check_is_http_token.jsn=1000000 key='Last-Modified'                                                         0.18 %       ±0.37% ±0.49%  ±0.64%
http/check_is_http_token.jsn=1000000 key='location'                                                              0.01 %       ±0.39% ±0.52%  ±0.68%
http/check_is_http_token.jsn=1000000 key='server'                                                                0.05 %       ±0.57% ±0.75%  ±0.98%
http/check_is_http_token.jsn=1000000 key='Server'                                                               -0.12 %       ±0.45% ±0.60%  ±0.78%
http/check_is_http_token.jsn=1000000 key='status'                                                                0.05 %       ±0.51% ±0.68%  ±0.89%
http/check_is_http_token.jsn=1000000 key='TCN'                                                                  -0.20 %       ±0.59% ±0.79%  ±1.03%
http/check_is_http_token.jsn=1000000 key='Transfer-Encoding'                                              *      0.35 %       ±0.32% ±0.43%  ±0.56%
http/check_is_http_token.jsn=1000000 key='Vary'                                                                 -0.18 %       ±0.44% ±0.59%  ±0.77%
http/check_is_http_token.jsn=1000000 key='version'                                                              -0.10 %       ±0.45% ±0.60%  ±0.78%
http/check_is_http_token.jsn=1000000 key='x-frame-options'                                                       0.03 %       ±0.33% ±0.44%  ±0.57%
http/check_is_http_token.jsn=1000000 key='x-xss-protection'                                                     -0.08 %       ±0.31% ±0.41%  ±0.53%
http/check_is_http_token.jsn=1000000 key='中文呢'                                                        **     -0.78 %       ±0.52% ±0.70%  ±0.91%
http/chunked.jsduration=5 c=100 len=1 n=1 benchmarker='wrk'                                                      0.73 %       ±1.89% ±2.52%  ±3.28%
http/chunked.jsduration=5 c=100 len=1 n=16 benchmarker='wrk'                                                     1.10 %       ±1.75% ±2.33%  ±3.04%
http/chunked.jsduration=5 c=100 len=1 n=4 benchmarker='wrk'                                                     -0.15 %       ±1.04% ±1.38%  ±1.79%
http/chunked.jsduration=5 c=100 len=1 n=8 benchmarker='wrk'                                                      0.68 %       ±1.01% ±1.35%  ±1.76%
http/chunked.jsduration=5 c=100 len=256 n=1 benchmarker='wrk'                                                   -0.01 %       ±2.16% ±2.87%  ±3.74%
http/chunked.jsduration=5 c=100 len=256 n=16 benchmarker='wrk'                                                  -0.27 %       ±1.76% ±2.35%  ±3.05%
http/chunked.jsduration=5 c=100 len=256 n=4 benchmarker='wrk'                                                    0.13 %       ±1.15% ±1.53%  ±2.00%
http/chunked.jsduration=5 c=100 len=256 n=8 benchmarker='wrk'                                                    0.34 %       ±1.25% ±1.66%  ±2.17%
http/chunked.jsduration=5 c=100 len=64 n=1 benchmarker='wrk'                                                     0.40 %       ±1.69% ±2.25%  ±2.93%
http/chunked.jsduration=5 c=100 len=64 n=16 benchmarker='wrk'                                                   -0.54 %       ±1.85% ±2.47%  ±3.23%
http/chunked.jsduration=5 c=100 len=64 n=4 benchmarker='wrk'                                                    -1.04 %       ±1.08% ±1.43%  ±1.87%
http/chunked.jsduration=5 c=100 len=64 n=8 benchmarker='wrk'                                                    -0.68 %       ±1.05% ±1.40%  ±1.82%
http/client-request-body.jsmethod='end' len=1024 type='asc' dur=5                                       ***      4.34 %       ±0.66% ±0.88%  ±1.14%
http/client-request-body.jsmethod='end' len=1024 type='buf' dur=5                                       ***      4.06 %       ±0.71% ±0.95%  ±1.24%
http/client-request-body.jsmethod='end' len=1024 type='utf' dur=5                                       ***      4.66 %       ±0.71% ±0.95%  ±1.24%
http/client-request-body.jsmethod='end' len=256 type='asc' dur=5                                        ***      4.13 %       ±0.69% ±0.91%  ±1.19%
http/client-request-body.jsmethod='end' len=256 type='buf' dur=5                                        ***      3.98 %       ±0.70% ±0.93%  ±1.21%
http/client-request-body.jsmethod='end' len=256 type='utf' dur=5                                        ***      3.55 %       ±0.74% ±0.98%  ±1.28%
http/client-request-body.jsmethod='end' len=32 type='asc' dur=5                                         ***      2.22 %       ±0.67% ±0.89%  ±1.16%
http/client-request-body.jsmethod='end' len=32 type='buf' dur=5                                         ***      2.38 %       ±0.86% ±1.14%  ±1.48%
http/client-request-body.jsmethod='end' len=32 type='utf' dur=5                                         ***      2.62 %       ±0.76% ±1.01%  ±1.31%
http/client-request-body.jsmethod='write' len=1024 type='asc' dur=5                                     ***      4.32 %       ±0.72% ±0.96%  ±1.25%
http/client-request-body.jsmethod='write' len=1024 type='buf' dur=5                                     ***      4.32 %       ±0.73% ±0.97%  ±1.26%
http/client-request-body.jsmethod='write' len=1024 type='utf' dur=5                                     ***      4.11 %       ±0.68% ±0.90%  ±1.17%
http/client-request-body.jsmethod='write' len=256 type='asc' dur=5                                      ***      4.03 %       ±0.71% ±0.94%  ±1.23%
http/client-request-body.jsmethod='write' len=256 type='buf' dur=5                                      ***      4.45 %       ±0.72% ±0.95%  ±1.24%
http/client-request-body.jsmethod='write' len=256 type='utf' dur=5                                      ***      3.89 %       ±0.63% ±0.83%  ±1.08%
http/client-request-body.jsmethod='write' len=32 type='asc' dur=5                                       ***      2.27 %       ±0.64% ±0.85%  ±1.11%
http/client-request-body.jsmethod='write' len=32 type='buf' dur=5                                       ***      1.83 %       ±0.65% ±0.87%  ±1.13%
http/client-request-body.jsmethod='write' len=32 type='utf' dur=5                                       ***      2.77 %       ±0.66% ±0.88%  ±1.15%
http/cluster.jsduration=5 c=50 len=1024 type='buffer' benchmarker='wrk'                                 ***      2.76 %       ±0.84% ±1.11%  ±1.45%
http/cluster.jsduration=5 c=50 len=1024 type='bytes' benchmarker='wrk'                                  ***      2.32 %       ±0.68% ±0.90%  ±1.18%
http/cluster.jsduration=5 c=50 len=102400 type='buffer' benchmarker='wrk'                               ***      1.59 %       ±0.63% ±0.84%  ±1.09%
http/cluster.jsduration=5 c=50 len=102400 type='bytes' benchmarker='wrk'                                  *      0.53 %       ±0.50% ±0.67%  ±0.87%
http/cluster.jsduration=5 c=50 len=4 type='buffer' benchmarker='wrk'                                    ***      2.05 %       ±0.88% ±1.17%  ±1.52%
http/cluster.jsduration=5 c=50 len=4 type='bytes' benchmarker='wrk'                                     ***      2.43 %       ±0.77% ±1.03%  ±1.35%
http/cluster.jsduration=5 c=500 len=1024 type='buffer' benchmarker='wrk'                                ***      2.26 %       ±0.77% ±1.03%  ±1.34%
http/cluster.jsduration=5 c=500 len=1024 type='bytes' benchmarker='wrk'                                 ***      2.02 %       ±0.81% ±1.07%  ±1.40%
http/cluster.jsduration=5 c=500 len=102400 type='buffer' benchmarker='wrk'                              ***      2.01 %       ±0.68% ±0.90%  ±1.17%
http/cluster.jsduration=5 c=500 len=102400 type='bytes' benchmarker='wrk'                               ***      1.35 %       ±0.71% ±0.95%  ±1.24%
http/cluster.jsduration=5 c=500 len=4 type='buffer' benchmarker='wrk'                                   ***      3.17 %       ±0.90% ±1.20%  ±1.56%
http/cluster.jsduration=5 c=500 len=4 type='bytes' benchmarker='wrk'                                    ***      2.18 %       ±0.81% ±1.08%  ±1.40%
http/create-clientrequest.jse=1 arg='options' url='idn'                                                         -0.43 %       ±1.00% ±1.34%  ±1.74%
http/create-clientrequest.jse=1 arg='options' url='long'                                                        -0.40 %       ±1.04% ±1.39%  ±1.81%
http/create-clientrequest.jse=1 arg='options' url='wpt'                                                         -1.05 %       ±1.32% ±1.76%  ±2.29%
http/create-clientrequest.jse=1 arg='string' url='idn'                                                    *     -0.82 %       ±0.69% ±0.91%  ±1.19%
http/create-clientrequest.jse=1 arg='string' url='long'                                                  **     -1.06 %       ±0.65% ±0.87%  ±1.13%
http/create-clientrequest.jse=1 arg='string' url='wpt'                                                          -0.62 %       ±1.00% ±1.34%  ±1.74%
http/create-clientrequest.jse=1 arg='URL' url='idn'                                                              0.75 %       ±2.14% ±2.85%  ±3.70%
http/create-clientrequest.jse=1 arg='URL' url='long'                                                             0.16 %       ±0.91% ±1.21%  ±1.58%
http/create-clientrequest.jse=1 arg='URL' url='wpt'                                                              1.11 %       ±1.30% ±1.73%  ±2.26%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=1048576 type='asc' benchmarker='wrk'                  -0.09 %       ±0.65% ±0.86%  ±1.12%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=1048576 type='buf' benchmarker='wrk'           **      1.78 %       ±1.33% ±1.78%  ±2.31%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=1048576 type='utf' benchmarker='wrk'                   0.18 %       ±0.33% ±0.44%  ±0.57%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=131072 type='asc' benchmarker='wrk'                    0.48 %       ±0.57% ±0.75%  ±0.98%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=131072 type='buf' benchmarker='wrk'           ***      2.66 %       ±1.53% ±2.03%  ±2.65%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=131072 type='utf' benchmarker='wrk'                    0.38 %       ±1.10% ±1.46%  ±1.90%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=262144 type='asc' benchmarker='wrk'                   -0.01 %       ±0.43% ±0.57%  ±0.75%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=262144 type='buf' benchmarker='wrk'             *      1.44 %       ±1.30% ±1.73%  ±2.25%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=262144 type='utf' benchmarker='wrk'                   -0.02 %       ±0.33% ±0.44%  ±0.57%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=65536 type='asc' benchmarker='wrk'              *      0.83 %       ±0.80% ±1.06%  ±1.38%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=65536 type='buf' benchmarker='wrk'             **      2.66 %       ±1.64% ±2.19%  ±2.85%
http/end-vs-write-end.jsduration=5 method='end' c=100 len=65536 type='utf' benchmarker='wrk'                     0.80 %       ±1.02% ±1.36%  ±1.77%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=1048576 type='asc' benchmarker='wrk'                -0.14 %       ±0.43% ±0.57%  ±0.74%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=1048576 type='buf' benchmarker='wrk'                 0.25 %       ±1.33% ±1.78%  ±2.32%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=1048576 type='utf' benchmarker='wrk'                 0.10 %       ±0.30% ±0.40%  ±0.52%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=131072 type='asc' benchmarker='wrk'           *      1.08 %       ±1.04% ±1.38%  ±1.80%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=131072 type='buf' benchmarker='wrk'                 -0.22 %       ±1.46% ±1.94%  ±2.53%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=131072 type='utf' benchmarker='wrk'                  0.67 %       ±1.03% ±1.38%  ±1.79%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=262144 type='asc' benchmarker='wrk'                  0.61 %       ±1.67% ±2.23%  ±2.90%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=262144 type='buf' benchmarker='wrk'                  0.75 %       ±1.20% ±1.59%  ±2.07%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=262144 type='utf' benchmarker='wrk'                  0.09 %       ±0.25% ±0.33%  ±0.44%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=65536 type='asc' benchmarker='wrk'           **      1.33 %       ±0.82% ±1.10%  ±1.43%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=65536 type='buf' benchmarker='wrk'                   1.50 %       ±1.56% ±2.07%  ±2.70%
http/end-vs-write-end.jsduration=5 method='write' c=100 len=65536 type='utf' benchmarker='wrk'            *      1.31 %       ±1.03% ±1.37%  ±1.78%
http/headers.jsduration=5 len=1 n=10 benchmarker='wrk'                                                  ***      3.88 %       ±2.01% ±2.67%  ±3.48%
http/headers.jsduration=5 len=1 n=600 benchmarker='wrk'                                                         -0.83 %       ±1.18% ±1.57%  ±2.05%
http/headers.jsduration=5 len=100 n=10 benchmarker='wrk'                                                ***      2.67 %       ±1.33% ±1.77%  ±2.30%
http/headers.jsduration=5 len=100 n=600 benchmarker='wrk'                                                        0.12 %       ±1.95% ±2.59%  ±3.38%
http/http_server_for_chunky_client.jstype='send' n=2000 len=1                                                    0.16 %       ±0.91% ±1.21%  ±1.58%
http/http_server_for_chunky_client.jstype='send' n=2000 len=128                                                  0.76 %       ±0.81% ±1.08%  ±1.40%
http/http_server_for_chunky_client.jstype='send' n=2000 len=16                                                   0.34 %       ±0.78% ±1.04%  ±1.35%
http/http_server_for_chunky_client.jstype='send' n=2000 len=32                                                   0.22 %       ±0.93% ±1.24%  ±1.61%
http/http_server_for_chunky_client.jstype='send' n=2000 len=4                                                    0.99 %       ±1.08% ±1.44%  ±1.88%
http/http_server_for_chunky_client.jstype='send' n=2000 len=64                                                   0.80 %       ±0.80% ±1.06%  ±1.38%
http/http_server_for_chunky_client.jstype='send' n=2000 len=8                                                    0.44 %       ±0.72% ±0.96%  ±1.25%
http/http_server_for_chunky_client.jstype='send' n=5 len=1                                                      -2.01 %       ±6.61% ±8.79% ±11.45%
http/http_server_for_chunky_client.jstype='send' n=5 len=128                                                     1.88 %       ±2.45% ±3.29%  ±4.35%
http/http_server_for_chunky_client.jstype='send' n=5 len=16                                                     -0.47 %       ±2.38% ±3.20%  ±4.23%
http/http_server_for_chunky_client.jstype='send' n=5 len=32                                                     -2.52 %       ±3.94% ±5.31%  ±7.03%
http/http_server_for_chunky_client.jstype='send' n=5 len=4                                                      -0.28 %       ±2.58% ±3.48%  ±4.60%
http/http_server_for_chunky_client.jstype='send' n=5 len=64                                                      2.32 %       ±2.83% ±3.80%  ±5.04%
http/http_server_for_chunky_client.jstype='send' n=5 len=8                                                       0.78 %       ±0.81% ±1.08%  ±1.41%
http/http_server_for_chunky_client.jstype='send' n=50 len=1                                                     -0.00 %       ±1.73% ±2.32%  ±3.05%
http/http_server_for_chunky_client.jstype='send' n=50 len=128                                                    0.37 %       ±0.90% ±1.20%  ±1.56%
http/http_server_for_chunky_client.jstype='send' n=50 len=16                                              *      1.12 %       ±0.92% ±1.23%  ±1.60%
http/http_server_for_chunky_client.jstype='send' n=50 len=32                                                     0.35 %       ±0.75% ±1.00%  ±1.30%
http/http_server_for_chunky_client.jstype='send' n=50 len=4                                                     -0.48 %       ±0.97% ±1.29%  ±1.67%
http/http_server_for_chunky_client.jstype='send' n=50 len=64                                              *      2.07 %       ±2.03% ±2.73%  ±3.60%
http/http_server_for_chunky_client.jstype='send' n=50 len=8                                                     -0.01 %       ±0.63% ±0.84%  ±1.09%
http/http_server_for_chunky_client.jstype='send' n=500 len=1                                                     0.23 %       ±0.79% ±1.05%  ±1.37%
http/http_server_for_chunky_client.jstype='send' n=500 len=128                                                   0.27 %       ±1.01% ±1.35%  ±1.75%
http/http_server_for_chunky_client.jstype='send' n=500 len=16                                                    0.62 %       ±0.82% ±1.09%  ±1.42%
http/http_server_for_chunky_client.jstype='send' n=500 len=32                                             *      1.17 %       ±1.03% ±1.37%  ±1.80%
http/http_server_for_chunky_client.jstype='send' n=500 len=4                                                    -0.04 %       ±0.62% ±0.82%  ±1.07%
http/http_server_for_chunky_client.jstype='send' n=500 len=64                                                    0.26 %       ±1.03% ±1.38%  ±1.80%
http/http_server_for_chunky_client.jstype='send' n=500 len=8                                                    -0.13 %       ±0.88% ±1.16%  ±1.52%
http/incoming_headers.jsduration=5 w=0 headers=20 connections=50 benchmarker='wrk'                      ***      4.25 %       ±2.23% ±2.97%  ±3.86%
http/incoming_headers.jsduration=5 w=6 headers=20 connections=50 benchmarker='wrk'                      ***      4.33 %       ±2.23% ±2.96%  ±3.86%
http/set_header.jsn=1000000 value='Connection'                                                                   0.98 %       ±2.02% ±2.71%  ±3.57%
http/set_header.jsn=1000000 value='Content-Length'                                                              -0.18 %       ±0.65% ±0.86%  ±1.12%
http/set_header.jsn=1000000 value='Content-Type'                                                                 0.25 %       ±2.16% ±2.89%  ±3.77%
http/set_header.jsn=1000000 value='Set-Cookie'                                                                  -0.51 %       ±1.06% ±1.42%  ±1.86%
http/set_header.jsn=1000000 value='Transfer-Encoding'                                                           -0.14 %       ±0.61% ±0.82%  ±1.06%
http/set_header.jsn=1000000 value='Vary'                                                                  *      1.19 %       ±0.96% ±1.28%  ±1.67%
http/set_header.jsn=1000000 value='X-Powered-By'                                                                -0.18 %       ±0.85% ±1.14%  ±1.48%
http/set-header.jsduration=5 res='normal' benchmarker='wrk'                                             ***      3.48 %       ±1.70% ±2.26%  ±2.95%
http/set-header.jsduration=5 res='setHeader' benchmarker='wrk'                                          ***      3.27 %       ±1.83% ±2.43%  ±3.16%
http/set-header.jsduration=5 res='setHeaderWH' benchmarker='wrk'                                          *      1.84 %       ±1.74% ±2.32%  ±3.02%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=1 len=1024 type='buffer' benchmarker='wrk'             **      2.33 %       ±1.52% ±2.03%  ±2.64%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=1 len=1024 type='bytes' benchmarker='wrk'              **      2.75 %       ±1.92% ±2.55%  ±3.32%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=1 len=102400 type='buffer' benchmarker='wrk'          ***      3.28 %       ±1.57% ±2.09%  ±2.72%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=1 len=102400 type='bytes' benchmarker='wrk'                    0.37 %       ±0.90% ±1.20%  ±1.56%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=1 len=4 type='buffer' benchmarker='wrk'                        1.85 %       ±1.86% ±2.47%  ±3.21%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=1 len=4 type='bytes' benchmarker='wrk'                         1.73 %       ±1.84% ±2.45%  ±3.19%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=4 len=1024 type='buffer' benchmarker='wrk'             **      3.32 %       ±1.94% ±2.58%  ±3.37%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=4 len=1024 type='bytes' benchmarker='wrk'              **      2.87 %       ±1.87% ±2.49%  ±3.25%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=4 len=102400 type='buffer' benchmarker='wrk'                   0.88 %       ±1.67% ±2.23%  ±2.92%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=4 len=102400 type='bytes' benchmarker='wrk'            **      1.38 %       ±0.90% ±1.20%  ±1.56%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=4 len=4 type='buffer' benchmarker='wrk'               ***      3.70 %       ±1.97% ±2.62%  ±3.42%
http/simple.jsduration=5 chunkedEnc=0 c=50 chunks=4 len=4 type='bytes' benchmarker='wrk'                ***      4.32 %       ±1.76% ±2.34%  ±3.05%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=1 len=1024 type='buffer' benchmarker='wrk'           ***      3.23 %       ±1.84% ±2.45%  ±3.19%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=1 len=1024 type='bytes' benchmarker='wrk'            ***      3.93 %       ±1.67% ±2.23%  ±2.90%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=1 len=102400 type='buffer' benchmarker='wrk'         ***      2.46 %       ±1.37% ±1.83%  ±2.38%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=1 len=102400 type='bytes' benchmarker='wrk'            *     -2.39 %       ±1.88% ±2.51%  ±3.26%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=1 len=4 type='buffer' benchmarker='wrk'                *      2.29 %       ±1.75% ±2.34%  ±3.05%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=1 len=4 type='bytes' benchmarker='wrk'                 *      1.85 %       ±1.57% ±2.09%  ±2.72%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=4 len=1024 type='buffer' benchmarker='wrk'                    0.26 %       ±1.57% ±2.08%  ±2.72%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=4 len=1024 type='bytes' benchmarker='wrk'            ***      2.72 %       ±1.34% ±1.79%  ±2.33%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=4 len=102400 type='buffer' benchmarker='wrk'                  0.90 %       ±1.54% ±2.05%  ±2.68%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=4 len=102400 type='bytes' benchmarker='wrk'                   0.26 %       ±0.87% ±1.16%  ±1.51%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=4 len=4 type='buffer' benchmarker='wrk'               **      2.02 %       ±1.49% ±1.98%  ±2.57%
http/simple.jsduration=5 chunkedEnc=0 c=500 chunks=4 len=4 type='bytes' benchmarker='wrk'               ***      3.41 %       ±1.53% ±2.04%  ±2.66%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=1 len=1024 type='buffer' benchmarker='wrk'            ***      2.84 %       ±1.55% ±2.07%  ±2.70%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=1 len=1024 type='bytes' benchmarker='wrk'                      1.72 %       ±1.91% ±2.54%  ±3.31%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=1 len=102400 type='buffer' benchmarker='wrk'          ***      2.98 %       ±1.46% ±1.95%  ±2.54%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=1 len=102400 type='bytes' benchmarker='wrk'             *      0.92 %       ±0.72% ±0.96%  ±1.26%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=1 len=4 type='buffer' benchmarker='wrk'                **      2.46 %       ±1.69% ±2.25%  ±2.93%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=1 len=4 type='bytes' benchmarker='wrk'                 **      2.96 %       ±1.81% ±2.41%  ±3.14%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=4 len=1024 type='buffer' benchmarker='wrk'              *      1.62 %       ±1.50% ±2.00%  ±2.60%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=4 len=1024 type='bytes' benchmarker='wrk'             ***      2.83 %       ±1.50% ±1.99%  ±2.59%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=4 len=102400 type='buffer' benchmarker='wrk'            *      1.81 %       ±1.40% ±1.86%  ±2.42%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=4 len=102400 type='bytes' benchmarker='wrk'            **      1.30 %       ±0.95% ±1.26%  ±1.64%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=4 len=4 type='buffer' benchmarker='wrk'                **      2.31 %       ±1.46% ±1.94%  ±2.53%
http/simple.jsduration=5 chunkedEnc=1 c=50 chunks=4 len=4 type='bytes' benchmarker='wrk'                 **      2.31 %       ±1.50% ±2.00%  ±2.60%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=1 len=1024 type='buffer' benchmarker='wrk'                    0.96 %       ±1.22% ±1.62%  ±2.11%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=1 len=1024 type='bytes' benchmarker='wrk'            ***      3.31 %       ±1.48% ±1.97%  ±2.56%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=1 len=102400 type='buffer' benchmarker='wrk'          **      2.41 %       ±1.55% ±2.06%  ±2.68%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=1 len=102400 type='bytes' benchmarker='wrk'                   0.18 %       ±0.65% ±0.87%  ±1.13%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=1 len=4 type='buffer' benchmarker='wrk'                       1.40 %       ±1.67% ±2.22%  ±2.89%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=1 len=4 type='bytes' benchmarker='wrk'                **      2.71 %       ±1.72% ±2.29%  ±2.99%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=4 len=1024 type='buffer' benchmarker='wrk'           ***      2.06 %       ±1.18% ±1.58%  ±2.05%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=4 len=1024 type='bytes' benchmarker='wrk'            ***      2.52 %       ±1.29% ±1.72%  ±2.23%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=4 len=102400 type='buffer' benchmarker='wrk'           *      1.43 %       ±1.37% ±1.83%  ±2.38%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=4 len=102400 type='bytes' benchmarker='wrk'           **      1.64 %       ±1.03% ±1.37%  ±1.79%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=4 len=4 type='buffer' benchmarker='wrk'               **      2.18 %       ±1.54% ±2.05%  ±2.67%
http/simple.jsduration=5 chunkedEnc=1 c=500 chunks=4 len=4 type='bytes' benchmarker='wrk'                        0.50 %       ±1.37% ±1.82%  ±2.37%
http/upgrade.jsn=1000                                                                                    **      0.64 %       ±0.45% ±0.60%  ±0.78%
http/upgrade.jsn=5                                                                                      ***     -0.81 %       ±0.34% ±0.46%  ±0.59%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 222 comparisons, you can thus
expect the following amount of false-positive results:
  11.10 false positives, when considering a   5% risk acceptance (*, **, ***),
  2.22 false positives, when considering a   1% risk acceptance (**, ***),
  0.22 false positives, when considering a 0.1% risk acceptance (***)

Merge request reports

Loading