{
  "study": "Tedd.WildcardMatch matching-call optimization measured with DotNetLab",
  "date": "2026-10-15",
  "source_record": "Tedd.WildcardMatch/Research/2026-10-15 dotnetlab-validation/summary.json and report.html",
  "baseline_revision": "4f1a8b7442168698a3ee936978d504f2b3a8fe32",
  "baseline_source_hashes": {
    "CompiledSegments.cs": "3f70a22bb67c78158328da9339be03b974c3d3d522f2a7473cce1bb5c0176d58",
    "DefaultWildcardEngine.cs": "109fc368f7b19010f7a2f203439bba00642f4df0bb8ab4c59a8a80e1aba0dd85",
    "FixedPattern.cs": "911a6cbbcf3e9484f0faf46be6993ca6baba25443522d276b74223c34ed3fbc7",
    "InternalUtils.cs": "4f21b3c86cccdeef6155ffcac31a7dc0cecac58eb592a5df7eedb27733edcafa",
    "ShortPattern.cs": "52786d12bc274460fa2eae66d42083ce2e076d8d2b9923a39b7dbed89f21d3ff",
    "WildcardEngine.cs": "54cc039904c806fcefc7654d934881eff71155147ff8b683cd437a222d71e8da",
    "WildcardEngine.Spans.cs": "4349e6800587ee6fff0cbce87082355a3239d33986baa5457ad5d9bfc4db699b",
    "WildcardMatch.cs": "69c00965323b437b931d978b562d2defb6830f6bdc177a414ae43330a8f4eb7f",
    "WildcardMatchExtensions.cs": "395ac02229ae89309f6258d2db07472615fbd3cf7b2653d183e904d47adc904d",
    "WildcardMatchRegex.cs": "1f7771890d03b21f51b10c8c8ad31da127bb3770a38a108d7de3bc13f9b6da60",
    "WildcardOptions.cs": "ddd70ad88b5548e2564016f8c63e6e8054d1d6c6c1b27d3c2179ca947552f4db"
  },
  "platform": {
    "cpu": "AMD Ryzen 9 5950X 16-Core Processor",
    "os": "Windows 10.0.26200 x64",
    "runtime": "CoreCLR 10.0.12",
    "sdk": "10.0.402",
    "dotnetlab_revision": "ab314bd"
  },
  "mechanism": "Track the checked newline frontier in CompiledSegments.Window to avoid rescanning the same prefix after rejected literal anchors.",
  "patch": "wildcard-candidate.patch",
  "measurement": {
    "unit": "nanoseconds per matching call",
    "aggregation": "Geometric mean of ten retained batch means per arm",
    "ratio": "candidate / baseline",
    "pattern": "*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?b*",
    "corpus": "Four fixed inputs per scenario. Dense scenarios use repeated a prefixes of 4096 or 16384 characters, with suffixes: empty, zb, zc, and zb followed by LF. Ordinary and newline scenarios check fast rejection and LF behavior.",
    "confirmation": "10 randomized paired blocks per scenario, each with a fresh baseline and candidate process; 80 sessions total across four scenarios",
    "warmup_batches": 2,
    "seed": "20261015",
    "operations_per_batch": {
      "dense-4096": 512,
      "dense-16384": 512,
      "ordinary": 300000,
      "newline": 1000
    },
    "family_size": 4,
    "family_alpha": 0.05,
    "interval_coverage": 0.9875,
    "dense_benefit_threshold_ratio": 0.99,
    "ordinary_and_newline_guardrail": "5% equivalence margin; improved newline outcome accepted",
    "excluded_or_replacement_runs": 0,
    "correctness": "All 80 sessions reported correct, quiescent results against an independent Regex oracle",
    "builds": "Baseline and candidate embed the selected library source in distinct entry assemblies with byte-identical managed harness dependencies and runtime settings",
    "allocation": "Zero current-thread allocation during timing in all confirmation sessions"
  },
  "results": [
    {
      "shape": "dense-4096",
      "cost_ns": {
        "baseline": 654963.0405461896,
        "candidate": 475514.91170609876
      },
      "ratio": 0.7260179311943402,
      "interval": {
        "lower": 0.6794714803153157,
        "upper": 0.7757529958006518,
        "coverage": 0.9875
      },
      "classification": "improved"
    },
    {
      "shape": "dense-16384",
      "cost_ns": {
        "baseline": 8259676.31005283,
        "candidate": 2771530.854528062
      },
      "ratio": 0.335549572463855,
      "interval": {
        "lower": 0.28711756701924634,
        "upper": 0.3921512596724129,
        "coverage": 0.9875
      },
      "classification": "improved"
    },
    {
      "shape": "ordinary",
      "cost_ns": {
        "baseline": 84.86469007433668,
        "candidate": 84.74430802127858
      },
      "ratio": 0.9985814824404282,
      "interval": {
        "lower": 0.9887079043116597,
        "upper": 1.0085536615256974,
        "coverage": 0.9875
      },
      "classification": "equivalent_within_margin"
    },
    {
      "shape": "newline",
      "cost_ns": {
        "baseline": 155255.84220993007,
        "candidate": 127016.43052576676
      },
      "ratio": 0.8181104731248746,
      "interval": {
        "lower": 0.7470905308916128,
        "upper": 0.8958817152157271,
        "coverage": 0.9875
      },
      "classification": "improved"
    }
  ],
  "limitations": [
    "One pattern and four synthetic input distributions; no whole-application claim",
    "Uncontrolled host load, affinity, frequency, and thermal state; fresh PIDs alone do not establish independence",
    "Stack sample/conversion caps, unknown loss status, and partial runtime provider coverage",
    "No ReJIT/probe mutation or p99 claim; selected method exceeds the mutation signature subset"
  ]
}
