FerretDB / wire

Apache License 2.0
2 stars 3 forks source link

Speedup quoting in logging #47

Open AlekSi opened 6 days ago

AlekSi commented 6 days ago

45 changes quotes for BSON logging from " to `. But it also made logging slower:

benchstat DocumentLogMessage/handshake1-10 514.1n ± ∞ ¹ 698.9n ± ∞ ¹ +35.95% (p=0.008 n=5) DocumentLogMessage/handshake2-10 513.7n ± ∞ ¹ 702.0n ± ∞ ¹ +36.66% (p=0.008 n=5) DocumentLogMessage/handshake3-10 341.6n ± ∞ ¹ 533.6n ± ∞ ¹ +56.21% (p=0.008 n=5) DocumentLogMessage/handshake4-10 2.088µ ± ∞ ¹ 2.776µ ± ∞ ¹ +32.95% (p=0.008 n=5) DocumentLogMessage/all-10 1.089µ ± ∞ ¹ 2.019µ ± ∞ ¹ +85.40% (p=0.008 n=5) DocumentLogMessage/nested-10 146.4n ± ∞ ¹ 214.9n ± ∞ ¹ +46.79% (p=0.008 n=5) DocumentLogMessage/float64Doc-10 195.8n ± ∞ ¹ 252.2n ± ∞ ¹ +28.80% (p=0.008 n=5) DocumentLogMessage/stringDoc-10 141.9n ± ∞ ¹ 233.1n ± ∞ ¹ +64.27% (p=0.008 n=5) DocumentLogMessage/binaryDoc-10 154.9n ± ∞ ¹ 208.0n ± ∞ ¹ +34.28% (p=0.008 n=5) DocumentLogMessage/objectIDDoc-10 172.4n ± ∞ ¹ 224.6n ± ∞ ¹ +30.28% (p=0.008 n=5) DocumentLogMessage/boolDoc-10 108.1n ± ∞ ¹ 160.7n ± ∞ ¹ +48.66% (p=0.008 n=5) DocumentLogMessage/timeDoc-10 184.3n ± ∞ ¹ 240.2n ± ∞ ¹ +30.33% (p=0.008 n=5) DocumentLogMessage/nullDoc-10 106.0n ± ∞ ¹ 159.4n ± ∞ ¹ +50.38% (p=0.008 n=5) DocumentLogMessage/regexDoc-10 112.0n ± ∞ ¹ 166.5n ± ∞ ¹ +48.66% (p=0.008 n=5) DocumentLogMessage/int32Doc-10 133.2n ± ∞ ¹ 191.9n ± ∞ ¹ +44.07% (p=0.008 n=5) DocumentLogMessage/timestampDoc-10 132.7n ± ∞ ¹ 187.2n ± ∞ ¹ +41.07% (p=0.008 n=5) DocumentLogMessage/int64Doc-10 153.9n ± ∞ ¹ 207.4n ± ∞ ¹ +34.76% (p=0.008 n=5) DocumentLogMessage/decimal128Doc-10 120.0n ± ∞ ¹ 170.4n ± ∞ ¹ +42.00% (p=0.008 n=5) DocumentLogMessage/smallDoc-10 123.4n ± ∞ ¹ 213.7n ± ∞ ¹ +73.18% (p=0.008 n=5) DocumentLogMessage/smallArray-10 123.5n ± ∞ ¹ 211.9n ± ∞ ¹ +71.58% (p=0.008 n=5) DocumentLogMessage/duplicateKeys-10 159.1n ± ∞ ¹ 228.0n ± ∞ ¹ +43.31% (p=0.008 n=5) DocumentLogMessageDeep/handshake1-10 2.136µ ± ∞ ¹ 2.851µ ± ∞ ¹ +33.47% (p=0.008 n=5) DocumentLogMessageDeep/handshake2-10 2.141µ ± ∞ ¹ 2.834µ ± ∞ ¹ +32.37% (p=0.008 n=5) DocumentLogMessageDeep/handshake3-10 468.1n ± ∞ ¹ 666.0n ± ∞ ¹ +42.28% (p=0.008 n=5) DocumentLogMessageDeep/handshake4-10 11.110µ ± ∞ ¹ 9.318µ ± ∞ ¹ -16.13% (p=0.008 n=5) DocumentLogMessageDeep/all-10 2.031µ ± ∞ ¹ 2.746µ ± ∞ ¹ +35.20% (p=0.008 n=5) DocumentLogMessageDeep/nested-10 680.3n ± ∞ ¹ 1045.0n ± ∞ ¹ +53.61% (p=0.008 n=5) DocumentLogMessageDeep/float64Doc-10 196.9n ± ∞ ¹ 252.0n ± ∞ ¹ +27.98% (p=0.008 n=5) DocumentLogMessageDeep/stringDoc-10 142.9n ± ∞ ¹ 232.7n ± ∞ ¹ +62.84% (p=0.008 n=5) DocumentLogMessageDeep/binaryDoc-10 154.9n ± ∞ ¹ 208.5n ± ∞ ¹ +34.60% (p=0.008 n=5) DocumentLogMessageDeep/objectIDDoc-10 172.4n ± ∞ ¹ 224.5n ± ∞ ¹ +30.22% (p=0.008 n=5) DocumentLogMessageDeep/boolDoc-10 108.9n ± ∞ ¹ 160.8n ± ∞ ¹ +47.66% (p=0.008 n=5) DocumentLogMessageDeep/timeDoc-10 185.0n ± ∞ ¹ 239.9n ± ∞ ¹ +29.68% (p=0.008 n=5) DocumentLogMessageDeep/nullDoc-10 106.4n ± ∞ ¹ 158.9n ± ∞ ¹ +49.34% (p=0.008 n=5) DocumentLogMessageDeep/regexDoc-10 112.5n ± ∞ ¹ 166.6n ± ∞ ¹ +48.09% (p=0.008 n=5) DocumentLogMessageDeep/int32Doc-10 133.4n ± ∞ ¹ 191.4n ± ∞ ¹ +43.48% (p=0.008 n=5) DocumentLogMessageDeep/timestampDoc-10 133.7n ± ∞ ¹ 187.3n ± ∞ ¹ +40.09% (p=0.008 n=5) DocumentLogMessageDeep/int64Doc-10 154.1n ± ∞ ¹ 208.0n ± ∞ ¹ +34.98% (p=0.008 n=5) DocumentLogMessageDeep/decimal128Doc-10 119.5n ± ∞ ¹ 171.0n ± ∞ ¹ +43.10% (p=0.008 n=5) DocumentLogMessageDeep/smallDoc-10 113.1n ± ∞ ¹ 167.1n ± ∞ ¹ +47.75% (p=0.008 n=5) DocumentLogMessageDeep/smallArray-10 113.6n ± ∞ ¹ 166.9n ± ∞ ¹ +46.92% (p=0.008 n=5) DocumentLogMessageDeep/duplicateKeys-10 158.6n ± ∞ ¹ 227.9n ± ∞ ¹ +43.69% (p=0.008 n=5) DocumentLogMessageIndent/handshake1-10 516.3n ± ∞ ¹ 715.2n ± ∞ ¹ +38.52% (p=0.008 n=5) DocumentLogMessageIndent/handshake2-10 520.0n ± ∞ ¹ 718.2n ± ∞ ¹ +38.12% (p=0.008 n=5) DocumentLogMessageIndent/handshake3-10 386.6n ± ∞ ¹ 565.6n ± ∞ ¹ +46.30% (p=0.008 n=5) DocumentLogMessageIndent/handshake4-10 2.189µ ± ∞ ¹ 2.869µ ± ∞ ¹ +31.06% (p=0.008 n=5) DocumentLogMessageIndent/all-10 1.120µ ± ∞ ¹ 2.099µ ± ∞ ¹ +87.41% (p=0.008 n=5) DocumentLogMessageIndent/nested-10 151.6n ± ∞ ¹ 243.3n ± ∞ ¹ +60.49% (p=0.008 n=5) DocumentLogMessageIndent/float64Doc-10 228.4n ± ∞ ¹ 284.4n ± ∞ ¹ +24.52% (p=0.008 n=5) DocumentLogMessageIndent/stringDoc-10 150.0n ± ∞ ¹ 241.1n ± ∞ ¹ +60.73% (p=0.008 n=5) DocumentLogMessageIndent/binaryDoc-10 160.4n ± ∞ ¹ 217.0n ± ∞ ¹ +35.29% (p=0.008 n=5) DocumentLogMessageIndent/objectIDDoc-10 196.0n ± ∞ ¹ 254.6n ± ∞ ¹ +29.90% (p=0.008 n=5) DocumentLogMessageIndent/boolDoc-10 114.4n ± ∞ ¹ 171.5n ± ∞ ¹ +49.91% (p=0.008 n=5) DocumentLogMessageIndent/timeDoc-10 211.7n ± ∞ ¹ 270.1n ± ∞ ¹ +27.59% (p=0.008 n=5) DocumentLogMessageIndent/nullDoc-10 113.4n ± ∞ ¹ 169.8n ± ∞ ¹ +49.74% (p=0.008 n=5) DocumentLogMessageIndent/regexDoc-10 120.7n ± ∞ ¹ 177.0n ± ∞ ¹ +46.64% (p=0.008 n=5) DocumentLogMessageIndent/int32Doc-10 160.9n ± ∞ ¹ 217.6n ± ∞ ¹ +35.24% (p=0.008 n=5) DocumentLogMessageIndent/timestampDoc-10 138.1n ± ∞ ¹ 195.9n ± ∞ ¹ +41.85% (p=0.008 n=5) DocumentLogMessageIndent/int64Doc-10 187.7n ± ∞ ¹ 245.7n ± ∞ ¹ +30.90% (p=0.008 n=5) DocumentLogMessageIndent/decimal128Doc-10 143.4n ± ∞ ¹ 200.3n ± ∞ ¹ +39.68% (p=0.008 n=5) DocumentLogMessageIndent/smallDoc-10 147.8n ± ∞ ¹ 241.8n ± ∞ ¹ +63.60% (p=0.008 n=5) DocumentLogMessageIndent/smallArray-10 148.9n ± ∞ ¹ 241.9n ± ∞ ¹ +62.46% (p=0.008 n=5) DocumentLogMessageIndent/duplicateKeys-10 166.7n ± ∞ ¹ 249.3n ± ∞ ¹ +49.55% (p=0.008 n=5) DocumentLogMessageIndentDeep/handshake1-10 2.284µ ± ∞ ¹ 2.976µ ± ∞ ¹ +30.30% (p=0.008 n=5) DocumentLogMessageIndentDeep/handshake2-10 2.295µ ± ∞ ¹ 2.972µ ± ∞ ¹ +29.50% (p=0.008 n=5) DocumentLogMessageIndentDeep/handshake3-10 510.5n ± ∞ ¹ 728.5n ± ∞ ¹ +42.70% (p=0.008 n=5) DocumentLogMessageIndentDeep/handshake4-10 11.634µ ± ∞ ¹ 9.696µ ± ∞ ¹ -16.66% (p=0.008 n=5) DocumentLogMessageIndentDeep/all-10 2.521µ ± ∞ ¹ 3.240µ ± ∞ ¹ +28.52% (p=0.008 n=5) DocumentLogMessageIndentDeep/nested-10 1.510µ ± ∞ ¹ 1.834µ ± ∞ ¹ +21.46% (p=0.008 n=5) DocumentLogMessageIndentDeep/float64Doc-10 232.7n ± ∞ ¹ 285.1n ± ∞ ¹ +22.52% (p=0.008 n=5) DocumentLogMessageIndentDeep/stringDoc-10 149.7n ± ∞ ¹ 242.2n ± ∞ ¹ +61.79% (p=0.008 n=5) DocumentLogMessageIndentDeep/binaryDoc-10 160.5n ± ∞ ¹ 217.5n ± ∞ ¹ +35.51% (p=0.008 n=5) DocumentLogMessageIndentDeep/objectIDDoc-10 195.8n ± ∞ ¹ 255.0n ± ∞ ¹ +30.23% (p=0.008 n=5) DocumentLogMessageIndentDeep/boolDoc-10 115.1n ± ∞ ¹ 172.1n ± ∞ ¹ +49.52% (p=0.008 n=5) DocumentLogMessageIndentDeep/timeDoc-10 211.4n ± ∞ ¹ 270.2n ± ∞ ¹ +27.81% (p=0.008 n=5) DocumentLogMessageIndentDeep/nullDoc-10 113.0n ± ∞ ¹ 169.8n ± ∞ ¹ +50.27% (p=0.008 n=5) DocumentLogMessageIndentDeep/regexDoc-10 120.5n ± ∞ ¹ 176.7n ± ∞ ¹ +46.64% (p=0.008 n=5) DocumentLogMessageIndentDeep/int32Doc-10 160.2n ± ∞ ¹ 215.9n ± ∞ ¹ +34.77% (p=0.008 n=5) DocumentLogMessageIndentDeep/timestampDoc-10 137.8n ± ∞ ¹ 195.2n ± ∞ ¹ +41.65% (p=0.008 n=5) DocumentLogMessageIndentDeep/int64Doc-10 187.6n ± ∞ ¹ 246.4n ± ∞ ¹ +31.34% (p=0.008 n=5) DocumentLogMessageIndentDeep/decimal128Doc-10 143.5n ± ∞ ¹ 200.8n ± ∞ ¹ +39.93% (p=0.008 n=5) DocumentLogMessageIndentDeep/smallDoc-10 120.5n ± ∞ ¹ 176.4n ± ∞ ¹ +46.39% (p=0.008 n=5) DocumentLogMessageIndentDeep/smallArray-10 120.9n ± ∞ ¹ 176.0n ± ∞ ¹ +45.57% (p=0.008 n=5) DocumentLogMessageIndentDeep/duplicateKeys-10 167.7n ± ∞ ¹ 248.1n ± ∞ ¹ +47.94% (p=0.008 n=5) geomean 275.1n 418.2n +25.13% ² ¹ need >= 6 samples for confidence interval at level 0.95 ² benchmark set differs from baseline; geomeans may not be comparable

We should speed it up to previous values. Probably, we should embed a part of strconv package to use appendQuotedWith.