You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MARKDOWN_LD_KB_BENCHMARK_PROFILE=cpu dotnet run --project benchmarks/MarkdownLd.Kb.Benchmarks -c Release -- --filter "*FuzzyEditDistanceBenchmarks*"
1316
1318
```
1317
1319
1318
-
Benchmark reports are written to `artifacts/benchmarks/results` as Markdown, CSV, and JSON. The reports are intentionally ignored by git because they depend on the local machine and current system load. PR validation runs `FuzzyEditDistanceBenchmarks` as a mandatory smoke benchmark and uploads the reports as the `benchmark-smoke` artifact. The full benchmark workflow in `.github/workflows/benchmarks.yml` runs manually or on the weekly schedule and uploads the complete `benchmarkdotnet-results` artifact.
1320
+
Benchmark reports are written to `artifacts/benchmarks/results` as Markdown, CSV, and full JSON. The reports are intentionally ignored by git because they depend on the local machine and current system load. PR validation runs `FuzzyEditDistanceBenchmarks` as a mandatory smoke benchmark and uploads the reports as the `benchmark-smoke` artifact. The full benchmark workflow in `.github/workflows/benchmarks.yml` runs manually or on the weekly schedule and uploads the complete `benchmarkdotnet-results` artifact. The benchmark config adds one default `ShortRun` job only when the command does not already pass `--job`, `--job=...`, or `-j`.
1319
1321
1320
-
Latest local benchmark run, executed on May 3, 2026 with BenchmarkDotNet 0.15.8, .NET 10.0.5, ShortRun, Apple M2 Pro, exported these reports:
1322
+
The exported BenchmarkDotNet reports include the diagnostic columns that matter for this library:
Graph build scales over generated Markdown corpora like this:
1330
-
1331
-
| Documents | Mean | Allocated |
1332
-
| ---: | ---: | ---: |
1333
-
| 25 | 1.169 ms | 1.81 MB |
1334
-
| 250 | 9.873 ms | 14.65 MB |
1335
-
| 1000 | 70.672 ms | 57.94 MB |
1324
+
| Area | Report data | Used for |
1325
+
| --- | --- | --- |
1326
+
| Latency | `Mean`, `Error`, `StdDev`, `Ratio`, `RatioSD`; full JSON also keeps min, quartiles, max, percentiles, and raw measurements | compare retrieval paths under the same generated workload |
1327
+
| Allocation and GC | `Allocated`, `Alloc Ratio`, `Gen0`, `Gen1`, `Gen2` | find APIs that allocate enough to hurt repeated search calls |
1328
+
| Threading | `Completed Work Items`, `Lock Contentions` | identify SPARQL and federation paths that schedule work or contend on locks |
1329
+
| Repro metadata | runtime, JIT, platform, job, iteration counts, corpus profile, query scenario | keep local runs comparable without pretending they are machine-independent |
1330
+
| Optional profiles | EventPipe `cpu`, `gc`, or `jit` artifacts when `MARKDOWN_LD_KB_BENCHMARK_PROFILE` is set | inspect hot methods after a suspicious benchmark result |
1331
+
1332
+
Benchmark workload profiles are named by shape instead of using unexplained document-count params:
| 25 | 0.111 ms | 0.197 ms | 0.234 ms | 0.191 ms | 5.799 ms | 8.769 ms |
1342
-
| 250 | 1.225 ms | 2.251 ms | 2.663 ms | 2.103 ms | 59.994 ms | 65.124 ms |
1343
-
| 1000 | 8.907 ms | 16.187 ms | 17.939 ms | 13.258 ms | 282.885 ms | 293.240 ms |
1344
-
1345
-
Typo-query search at 1000 generated documents measured 7.551 ms for ranked graph search, 12.044 ms for BM25, 20.340 ms for BM25 fuzzy, 12.700 ms for focused search, 258.953 ms for schema SPARQL, and 306.332 ms for local federated schema search. The fuzzy paths are opt-in and are expected to spend extra time to recover typo-heavy queries; they are not intended to beat exact lexical matching on raw speed.
Allocation and GC columns come directly from BenchmarkDotNet diagnosers. Treat the ratios and relative pressure inside the same run as the useful signal; ShortRun is a fast diagnostic pass, not a release-grade SLA measurement.
1390
+
1391
+
Persistence and export on the `LargeCorpus` profile:
1392
+
1393
+
| Method | Mean | StdDev | Allocated |
1394
+
| --- | ---: | ---: | ---: |
1395
+
| `CreateSnapshot` | 4.527 ms | 0.008 ms | 5.31 MB |
1396
+
| `SerializeTurtle` | 9.203 ms | 0.088 ms | 18.07 MB |
1397
+
| `SerializeJsonLd` | 13.157 ms | 0.086 ms | 20.31 MB |
1398
+
| `SaveTurtleToFile` | 29.853 ms | 0.122 ms | 34.74 MB |
1399
+
| `SaveJsonLdToFile` | 38.144 ms | 1.436 ms | 37.02 MB |
1400
+
| `LoadTurtleFromFile` | 35.983 ms | 0.373 ms | 28.10 MB |
1401
+
| `LoadJsonLdFromFile` | 99.980 ms | 2.262 ms | 75.32 MB |
| `LongDocuments` | Exact | 955.1 us | 952.7 us | 2.38 MB | 2.38 MB |
1408
+
| `LongDocuments` | Typo | 1.112 ms | 1.291 ms | 2.78 MB | 3.73 MB |
1409
+
| `TokenizedMultilingual` | Exact | 680.8 us | 690.5 us | 1.81 MB | 1.81 MB |
1410
+
| `TokenizedMultilingual` | Typo | 811.3 us | 861.2 us | 1.81 MB | 1.82 MB |
1354
1411
1355
1412
Fuzzy edit-distance mean time:
1356
1413
@@ -1361,4 +1418,4 @@ Fuzzy edit-distance mean time:
1361
1418
| Long insertion | 21.980 ns | 7,990.146 ns | 363.53x | 0 B | 640 B |
1362
1419
| Long no-match | 70.283 ns | 8,990.700 ns | 127.92x | 328 B | 672 B |
1363
1420
1364
-
These numbers are local measurements, not a cross-machine performance contract. The full Markdown, CSV, and JSON BenchmarkDotNet reports remain the source for detailed diagnostics.
1421
+
These numbers are local measurements, not a cross-machine performance contract. The README keeps compact slices only; [Performance Benchmarks](docs/Features/PerformanceBenchmarks.md) and the full Markdown, CSV, and JSON BenchmarkDotNet reports remain the source for detailed diagnostics.
0 commit comments