Files
anonymous_github/backend/reports/replacement-path-optimization.json
T

333 lines
10 KiB
JSON

{
"measuredAt": "2026-11-03T19:56:40.313Z",
"method": "Three fresh processes per version, alternating order; transform only, excludes compilation, I/O, child startup and fixture generation. Same-machine comparison against the Go implementation before regex optimization.",
"comparison": [
{
"name": "2 MB CSV, 47 absent terms",
"beforeMs": 1.646,
"afterMs": 2.285,
"speedup": 0.7203501094091903,
"beforeAllocatedBytes": 288,
"afterAllocatedBytes": 288,
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"name": "100 MB CSV, 47 absent terms",
"beforeMs": 101.618,
"afterMs": 118.113,
"speedup": 0.8603456012462641,
"beforeAllocatedBytes": 288,
"afterAllocatedBytes": 288,
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"name": "50 MB CSV, sparse matches",
"beforeMs": 591.941,
"afterMs": 269.905,
"speedup": 2.1931457364628297,
"beforeAllocatedBytes": 201666352,
"afterAllocatedBytes": 100815288,
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"name": "22 MB text, 1.2 million replacements",
"beforeMs": 394.294,
"afterMs": 189.823,
"speedup": 2.0771666236441315,
"beforeAllocatedBytes": 114614896,
"afterAllocatedBytes": 70813536,
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
}
],
"samples": [
{
"run": 0,
"implementation": "before",
"allocatedBytes": 288,
"compileMs": 27.398,
"inputBytes": 1960000,
"matchMs": 3.181,
"name": "2 MB CSV, 47 absent terms",
"outputBytes": 1960000,
"runtime": "go1.27.3",
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"run": 0,
"implementation": "before",
"allocatedBytes": 288,
"compileMs": 7.343,
"inputBytes": 100800000,
"matchMs": 101.618,
"name": "100 MB CSV, 47 absent terms",
"outputBytes": 100800000,
"runtime": "go1.27.3",
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"run": 0,
"implementation": "before",
"allocatedBytes": 201666352,
"compileMs": 3.131,
"inputBytes": 50400041,
"matchMs": 591.941,
"name": "50 MB CSV, sparse matches",
"outputBytes": 50400014,
"runtime": "go1.27.3",
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"run": 0,
"implementation": "before",
"allocatedBytes": 114620200,
"compileMs": 3.847,
"inputBytes": 21600000,
"matchMs": 394.294,
"name": "22 MB text, 1.2 million replacements",
"outputBytes": 19800000,
"runtime": "go1.27.3",
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
},
{
"run": 0,
"implementation": "after",
"allocatedBytes": 288,
"compileMs": 7.654,
"inputBytes": 1960000,
"matchMs": 2.15,
"name": "2 MB CSV, 47 absent terms",
"outputBytes": 1960000,
"runtime": "go1.27.3",
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"run": 0,
"implementation": "after",
"allocatedBytes": 288,
"compileMs": 3.392,
"inputBytes": 100800000,
"matchMs": 64.824,
"name": "100 MB CSV, 47 absent terms",
"outputBytes": 100800000,
"runtime": "go1.27.3",
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"run": 0,
"implementation": "after",
"allocatedBytes": 100815272,
"compileMs": 4.167,
"inputBytes": 50400041,
"matchMs": 269.905,
"name": "50 MB CSV, sparse matches",
"outputBytes": 50400014,
"runtime": "go1.27.3",
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"run": 0,
"implementation": "after",
"allocatedBytes": 70813568,
"compileMs": 9.856,
"inputBytes": 21600000,
"matchMs": 322.06,
"name": "22 MB text, 1.2 million replacements",
"outputBytes": 19800000,
"runtime": "go1.27.3",
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
},
{
"run": 1,
"implementation": "after",
"allocatedBytes": 288,
"compileMs": 7.513,
"inputBytes": 1960000,
"matchMs": 2.285,
"name": "2 MB CSV, 47 absent terms",
"outputBytes": 1960000,
"runtime": "go1.27.3",
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"run": 1,
"implementation": "after",
"allocatedBytes": 288,
"compileMs": 5.949,
"inputBytes": 100800000,
"matchMs": 153.087,
"name": "100 MB CSV, 47 absent terms",
"outputBytes": 100800000,
"runtime": "go1.27.3",
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"run": 1,
"implementation": "after",
"allocatedBytes": 100852328,
"compileMs": 7.187,
"inputBytes": 50400041,
"matchMs": 329.242,
"name": "50 MB CSV, sparse matches",
"outputBytes": 50400014,
"runtime": "go1.27.3",
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"run": 1,
"implementation": "after",
"allocatedBytes": 70813536,
"compileMs": 4.706,
"inputBytes": 21600000,
"matchMs": 189.823,
"name": "22 MB text, 1.2 million replacements",
"outputBytes": 19800000,
"runtime": "go1.27.3",
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
},
{
"run": 1,
"implementation": "before",
"allocatedBytes": 288,
"compileMs": 4.075,
"inputBytes": 1960000,
"matchMs": 1.269,
"name": "2 MB CSV, 47 absent terms",
"outputBytes": 1960000,
"runtime": "go1.27.3",
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"run": 1,
"implementation": "before",
"allocatedBytes": 288,
"compileMs": 5.607,
"inputBytes": 100800000,
"matchMs": 119.659,
"name": "100 MB CSV, 47 absent terms",
"outputBytes": 100800000,
"runtime": "go1.27.3",
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"run": 1,
"implementation": "before",
"allocatedBytes": 201634616,
"compileMs": 5.299,
"inputBytes": 50400041,
"matchMs": 624.138,
"name": "50 MB CSV, sparse matches",
"outputBytes": 50400014,
"runtime": "go1.27.3",
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"run": 1,
"implementation": "before",
"allocatedBytes": 114614896,
"compileMs": 3.318,
"inputBytes": 21600000,
"matchMs": 484.591,
"name": "22 MB text, 1.2 million replacements",
"outputBytes": 19800000,
"runtime": "go1.27.3",
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
},
{
"run": 2,
"implementation": "before",
"allocatedBytes": 288,
"compileMs": 6.028,
"inputBytes": 1960000,
"matchMs": 1.646,
"name": "2 MB CSV, 47 absent terms",
"outputBytes": 1960000,
"runtime": "go1.27.3",
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"run": 2,
"implementation": "before",
"allocatedBytes": 272,
"compileMs": 12.547,
"inputBytes": 100800000,
"matchMs": 100.802,
"name": "100 MB CSV, 47 absent terms",
"outputBytes": 100800000,
"runtime": "go1.27.3",
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"run": 2,
"implementation": "before",
"allocatedBytes": 201666400,
"compileMs": 3.38,
"inputBytes": 50400041,
"matchMs": 589.404,
"name": "50 MB CSV, sparse matches",
"outputBytes": 50400014,
"runtime": "go1.27.3",
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"run": 2,
"implementation": "before",
"allocatedBytes": 114614880,
"compileMs": 3.723,
"inputBytes": 21600000,
"matchMs": 358.638,
"name": "22 MB text, 1.2 million replacements",
"outputBytes": 19800000,
"runtime": "go1.27.3",
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
},
{
"run": 2,
"implementation": "after",
"allocatedBytes": 288,
"compileMs": 7.414,
"inputBytes": 1960000,
"matchMs": 2.286,
"name": "2 MB CSV, 47 absent terms",
"outputBytes": 1960000,
"runtime": "go1.27.3",
"sha256": "b3882940c0ad7a4f8e1385dcd3e32122c721f26b90144bb820b542e394f379cd"
},
{
"run": 2,
"implementation": "after",
"allocatedBytes": 272,
"compileMs": 5.508,
"inputBytes": 100800000,
"matchMs": 118.113,
"name": "100 MB CSV, 47 absent terms",
"outputBytes": 100800000,
"runtime": "go1.27.3",
"sha256": "fcccff214b1f6838f5d9345237f5252cd57e2263fc95640b2a3a5278156eec48"
},
{
"run": 2,
"implementation": "after",
"allocatedBytes": 100815288,
"compileMs": 3.414,
"inputBytes": 50400041,
"matchMs": 247.259,
"name": "50 MB CSV, sparse matches",
"outputBytes": 50400014,
"runtime": "go1.27.3",
"sha256": "153ce777c4473651a70f3f2f830cac5930214f6b998c08094939646193b0f9f0"
},
{
"run": 2,
"implementation": "after",
"allocatedBytes": 70813536,
"compileMs": 3.909,
"inputBytes": 21600000,
"matchMs": 162.45,
"name": "22 MB text, 1.2 million replacements",
"outputBytes": 19800000,
"runtime": "go1.27.3",
"sha256": "4e649aee83a6f15cb7178f725991ff5405affe013b0bba0b6eda18689c5c0249"
}
]
}