Stand: 2026-04-12 (zielgerichteter Validierungs- und Reproduktions-Run auf aktuellem Release-Build) | Quellen:
FUTURE_ENHANCEMENTS.mdje Modul,benchmarks/results_analysis_reports/,benchmarks/baselines/,benchmarks/VERSION_HISTORY.csv,benchmarks/chimera/,artifacts/perf_nv/targeted_validation/*.json,artifacts/perf_nv/repro_validation_*/*.json,artifacts/perf_nv/repro_validation_clean_manual_*/*.json, Wave-2 Performance SessionBenchmark-Plattformen:
- Run 20251223 (v1.3.0-baseline): MSVC Release x64, AVX2, 20-Core @ 3.7 GHz, 20 MB L3
- Run 20251223_085556 (v1.3.3-dev): MSVC Release x64, AVX2, 20-Core @ 3.7 GHz, 20 MB L3
- Run 20251229_184507 (v1.3.4): Windows x64, 20 Cores @ 3.696 GHz, 20 MB L3-Cache, L1=32KB, L2=256KB
Aktuell direkt validierte Artefakte aus dem laufenden Release-Build:
- Query:
artifacts/perf_nv/targeted_validation/bench_query_targeted.json - Vector/Index:
artifacts/perf_nv/targeted_validation/bench_vector_search_targeted.json - Analytics:
artifacts/perf_nv/targeted_validation/bench_olap_targeted.json - Graph:
artifacts/perf_nv/targeted_validation/bench_graph_targeted.json - Timeseries:
artifacts/perf_nv/targeted_validation/bench_timeseries_targeted.json - Timeseries Adaptive Flush:
artifacts/perf_nv/targeted_validation/bench_timeseries_adaptive_flush_targeted.json - System-Level TPC-C:
artifacts/perf_nv/targeted_validation/bench_tpcc_targeted_v2.json - System-Level YCSB:
artifacts/perf_nv/targeted_validation/bench_ycsb_targeted_v2.json - Timeseries TS-6 Probe:
artifacts/perf_nv/targeted_validation/bench_timeseries_ts6_probe_v2.json
Kernaussagen aus diesem Validierungs-Run:
- Der DLL-Startblocker fuer Benchmark-Binaries ist behoben; Query- und weitere Kern-Benchmarks laufen wieder direkt an.
- Query-Pagination ist aktuell messbar und nicht mehr als deaktivierter Pfad zu behandeln.
- Analytics AN-1/AN-2/AN-5/AN-7/AN-8/AN-9 sind im aktuellen Build direkt messbar.
- Timeseries TS-1 ist im aktuellen Persistenzpfad nur knapp unter Ziel (
AdaptiveFlushFixture/SingleThreaded: 477,9 k pts/s); TS-6 wurde im selben Build erneut reproduziert (BM_DownsamplingThroughput: 1,836 M pts/s, P99-Bucket 63 µs). - System-Level TPC-C/YCSB ist nach Reaktivierung der produktiven Bench-Pfade wieder direkt messbar (
TPCCLiteFixture,YCSBLiteFixture); der zuvor reproduzierbare Timeseries-TimeRangeQuery-Crash ist im aktuellen Build behoben.
Ergaenzender Repro-Lauf zur Validierung der wichtigsten KPI-Pfade:
- Query-Kernfaelle:
artifacts/perf_nv/repro_validation_20260412_211053/query_core.json - Timeseries TimeRange + TS-6:
artifacts/perf_nv/repro_validation_20260412_211053/timeseries_timerange_ts6.json - OLAP-Zielcases:
artifacts/perf_nv/repro_validation_20260412_211053/olap_targets.json - TPCC Lite:
artifacts/perf_nv/repro_validation_clean_manual_20260412_2120/tpcc_lite_clean.json - YCSB Lite:
artifacts/perf_nv/repro_validation_clean_manual_20260412_2120/ycsb_lite_clean.json
Reproduzierte Referenzwerte (einzelne Kernfaelle):
- Query:
BM_SimpleWhere0,206 ms,BM_ComplexWhere0,217 ms,BM_JoinUsersPosts1,109 ms. - Timeseries TimeRange: 60s 0,213 ms, 300s 1,015 ms, 3600s 3,782 ms, 86400s 3,892 ms.
- OLAP:
BM_OLAP_IVM_DeltaApply_10k20,19 µs,BM_OLAP_PredictBatch_1k3066,04 µs,BM_OLAP_AutoTune_Grid96,48 µs. - System-Level Lite:
TPCCLiteFixture/NewOrderLite/1/30003282 µs;YCSBLiteFixture/WorkloadA_50_50/10000001455 µs;WorkloadB_95_554,70 µs;WorkloadC_ReadOnly7,70 µs.
Hinweis zur Interpretierbarkeit: In einzelnen Lite-Faellen tritt weiterhin CPU-Time-Quantisierung (bis hin zu 0) auf; die Real-Time-Reproduzierbarkeit der Pfade bleibt davon unberuehrt.
| Symbol | Bedeutung |
|---|---|
| Ziel erfüllt (gemessen Ziel) | |
| Ziel nicht erfüllt (gemessen < Ziel) | |
| ÔÜá´©Å | Partiell / bekannte Regression |
| Kein Messwert vorhanden | |
| Nicht gemessen in dieser Version |
Struktur: Allgemein  Spezifisch (Module)  Rohdaten  Interface-SLOs
| # | Abschnitt | Typ |
|---|---|---|
| Legende | Referenz | |
| 1 | Versionshistorie Kernmetriken | Messung (allgemein) |
| 2 29 | Modul-Spezifische Erwartungswerte | Modul-SLOs |
| 30 | Chimera-Baseline & Suite | Benchmark-Framework |
| 31 32 | Prompt Engineering / Ethics AI | Modul-SLOs |
| 33 | System-Level TPC/YCSB | Benchmarks |
| 34 | CI Regression-Schwellwerte | CI |
| 35 | Bekannte Performance-Lücken | Lücken |
| 36 | Rohdaten: Google Benchmark C++ | Primäre Messungen |
| 37 | Performance-Maßnahmen (GitHub-PR) | Maßnahmen nach Modul |
| 38 | Rohdaten: HTTP-API & Docker Benchmarks | Primäre Messungen |
| 39 | API/Interface Performance-Annahmen | Interface SLOs |
Hinweis zur Statusbewertung: Felder mit sind Erwartungswerte ohne vorliegende Messung. Typ-Kennung in ┬º39: [M] = gemessen ┬À [Z] = Ziel ┬À [I] = implementiert/best├ñtigt.
Quelle:
benchmarks/VERSION_HISTORY.csv+benchmarks/results_analysis_reports/benchmark_summary.csvTestplattform v1.3.0 v1.3.3: Intel i9-10900K (10C/20T @ 3.70 GHz), 31 GB RAM, WSL2 Linux Testplattform v1.3.4: Windows x64, 20 Cores @ 3.696 GHz, 20 MB L3-Cache
| Metrik | Ziel | v1.3.0 | v1.3.1 | v1.3.2 | v1.3.3 | v1.3.4 | v1.8.2 | v1.8.0 Ziel | ╬ö v1.3.0ÔåÆv1.3.4 | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| Query Engine Throughput | 700 M ops/s | 750 M ops/s | 800 M ops/s | 800 M ops/s | 814,5 M ops/s | 796,4 M ops/s | ** 900 M ops/s** | +16 % | ||
| Vector Insert | 280 k/s | 300 k/s | 330 k/s | 340 k/s | 351,4 k/s | 548,7 k/s | ** 600 k/s** | +25 % | ||
| Secondary Index Insert | 180 k/s | 190 k/s | 210 k/s | 215 k/s | 217,2 k/s | 254,9 k/s | ** 1 M/s** | +21 % | ||
| Embedding Cache Hit-Rate | 155,8 M/s | n/v (Teilrun, nicht erneut gemessen) | ** 200 M/s** | n/a | ||||||
| 2PC Throughput | 6,4 k/s | n/v (Teilrun, nicht erneut gemessen) | ** 10 k/s** | n/a | ||||||
| Graph Edge Ops | 628,7 k/s | 1,177 M/s | ** 1 M/s** | n/a | ||||||
| Timeseries Insert | 49,0 M pts/s | 61,00 M pts/s | ** 60 M pts/s** | n/a | ||||||
| Gesamt Benchmark-Tests | 450 | 480 | 520 | 780 | 1.078 | 5 Kern-KPI-Cases (Teilrun) | ** 1.200** | +140 % |
| Kernmetrik | v1.8.2 Ist | Ziel | Ampel |
|---|---|---|---|
| Query Engine Throughput | 796,44 M ops/s | 900 M ops/s | Rot |
| Vector Insert | 548,7 k/s | 600 k/s | Gelb |
| Secondary Index Insert | 254,9 k/s | 1,0 M/s | Rot |
| Graph Edge Ops | 1,177 M/s | 1,0 M/s | Gruen |
| Timeseries Insert | 61,00 M pts/s | 60,0 M pts/s | Gruen |
Ampel-Logik: Gruen = Ziel fuer Referenz-KPI erreicht, Gelb = nur Proxy/Teilabdeckung, Rot = Referenz-KPI unter Ziel.
| Modul | Referenz-KPI (v1.8.2) | Zielbezug | Ampel | Hinweis |
|---|---|---|---|---|
| Query | QueryEngineBench/SimpleEvaluation = 796,44 M/s | >= 750 M items/s | Gruen | KPI erreicht, aber unter Kernziel 900 M/s |
| Index | VectorIndexBench/InsertPlaintext = 548,7 k/s | >= 280 k/s | Gruen | Sekundaerindex ebenfalls ueber Modulziel 180 k/s |
| Cache | C-1 Proxy = 5,851 M ops/s; C-4 = 443 k Entries/s (10k/4 workers) | >= 5 M ops/s/Core; >= 500 k Entries/s | Gelb | C-1 ueber Ziel, C-4 messbar aber noch unter Ziel |
| Storage | BM_SustainedWrite/16 = ~2,4 k ops/s | >= 100.000 ops/s (Sustained Write NVMe) | Rot | 1:1-nahe CRUD-Cases vorhanden, aber Sustained-Write klar unter Ziel |
| Analytics | AN-3/AN-4 direkt gemessen (Parquet/CSV je ~125-128k items/s) | 1M-Export-Ziele 2,0 s / 0,5 s | Rot | Direkte Cases vorhanden, aber Laufzeit fuer beide Exportziele deutlich ueber Ziel |
| Timeseries | TS-1 = 61,00 M pts/s; TS-6 = 1,906 M pts/s (1-min Aggregate) | > 500 k pts/s; TS-6 > 10 M pts/s | Gelb | TS-1 im Ziel, TS-6 direkt gemessen aber unter Ziel |
| Graph | SparseEdge = 331 edges/s; DenseNeighbor = 265k qps | >= 500k edges/s; >= 5M qps | Rot | 1:1-Cases fuer 19/20 vorhanden, beide aktuell unter Ziel |
Ergebnis der Gesamtpruefung ueber Module 2..33. Fokus: warum 1:1 passende Benchmarks fehlen oder nicht belastbar sind.
| Modul | Befund | Hauptursache |
|---|---|---|
| Query-Engine | Gute Abdeckung | Dedizierte 1:1-Cases fuer Run-Plan 1-3 inkl. P99, Skalierung und historischem Querymix vorhanden |
| Index | Gute Abdeckung | Kernbenchmarks vorhanden und lauffaehig; Luecken v.a. bei Spezialzielen (HNSW/GPU) |
| Cache | Teilabdeckung | C-1 und C-4 sind messbar, aber C-2/C-3/C-5/C-6/C-7 weiterhin ohne dedizierte 1:1-Metrik im Report |
| Storage | Teilabdeckung mit Zielverfehlung | Dedizierte CRUD-Cases vorhanden, jedoch nicht alle Storage-SLO-Profile (insb. Sustained NVMe/P99-Setup) 1:1 abgebildet |
| Analytics | Teilabdeckung mit Zielverfehlung | Direkte Cases fuer AN-1/AN-2/AN-5/AN-7/AN-8/AN-9 sowie AN-3/AN-4 vorhanden; Export-Ziele weiter unter Ziel, AN-10 weiterhin plattformblockiert |
| Timeseries | Teilabdeckung | Kernmetriken vorhanden, aber viele Unterziele ohne dedizierten Benchmark |
| Geo | Teilabdeckung | Bench-Dateien vorhanden, v1.8.2-Lauf fuer Geo-Referenzfaelle bisher nicht ausgefuehrt |
| Graph | Gute Abdeckung mit Zielverfehlung | Dedizierte Cases fuer Run-Plan 19/20 vorhanden, jedoch beide SLOs aktuell unter Ziel |
| Acceleration | Stark eingeschraenkt | Viele Benchmarks an CUDA/HIP/GPU-Flags gebunden oder als GPU-disabled Stub registriert |
| Replication | Teilabdeckung | Benchmarks vorhanden, aber keine vollstaendige Ziel-ID-zu-Benchmark-Zuordnung im Report |
| Sharding | Teilabdeckung | Benchmarks vorhanden, bisher kein v1.8.2-Ziellauf dokumentiert |
| Transaction | Teilabdeckung | Benchmarks vorhanden, aber ohne vollstaendige Ziel-SLO-Abdeckung im Dokument |
| LLM | Stark umgebungsabhaengig | LLM/GPU/Modellartefakte erforderlich; ohne diese nur Stub/Skip oder Integrationslauf |
| RAG | Teilabdeckung | Benchmarks vorhanden; einzelne Pfade (z.B. Ethics) als disabled-Variante |
| Search | Teilabdeckung | Benchmarks vorhanden, aber keine vollstaendige Zielabbildung im v1.8.2-Report |
| Temporal | Teilabdeckung | Bench-Datei vorhanden, aber kein dokumentierter v1.8.2-Ziellauf |
| API | Teilabdeckung | Teilweise API-gebundene Benchmarks deaktiviert (z.B. Stream-Protocol API-Change) |
| Auth | Teilabdeckung | Bench-Datei vorhanden, aber v1.8.2-Zielmessung nicht durchgaengig dokumentiert |
| CDC | Teilabdeckung | Bench-Dateien vorhanden, Ziel-SLO-Zuordnung unvollstaendig |
| Network | Teilabdeckung | Protokollnahe Benchmarks teilweise deaktiviert/veraendert durch API-Aenderungen |
| Security | Messbar (Audit verbessert) | bench_security.exe laeuft vollstaendig; aktuelle Artefakte in artifacts/perf_nv/bench_security_release.json und artifacts/perf_nv/bench_security_20260411_131126.json; Audit-Tamper-Append via Commit b9f21b5495 von ~11.4 ms auf ~4.07 ms Realzeit verbessert (Ziel p99 <= 2 ms bleibt offen) |
| Scheduler | Teilabdeckung | Benchmarks vorhanden, aber kein vollstaendiger v1.8.2-Ziellauf |
| Ingestion | Teilabdeckung | Benchmarks vorhanden, aber heterogene Workloads ohne einheitliche Zielabbildung |
| Governance | Messbar | bench_governance_policy_latency.exe und bench_compliance_security_governance.exe laufen vollstaendig; aktuelle Artefakte in artifacts/perf_nv/bench_governance_policy_latency_release.json, artifacts/perf_nv/bench_compliance_security_governance_release.json und artifacts/perf_nv/bench_compliance_20260411_142340.json |
| Observability | Teilabdeckung | Metrics/Logging-Benchmarks vorhanden, Zielmetriken nicht vollstaendig 1:1 gemessen |
| Process | Teilabdeckung | Benchmarks vorhanden, aber keine vollstaendige Zielabdeckung in v1.8.2 |
| Voice | Feature-Gating | bench_voice_assistant ist an THEMIS_ENABLE_VOICE_ASSISTANT gebunden und aktuell nicht gebaut |
| ONNX-CLIP | Teilabdeckung | Image/ONNX-Benchmarks vorhanden, aber keine durchgaengige Zieltabellen-Abdeckung |
| Chimera | Struktur-Luecke | Eigene Suite/Baselines vorhanden, aber kein einheitlicher nativer Modul-Benchmarkpfad im selben Schema |
| Prompt Engineering | Teilabdeckung | Benchmark vorhanden, jedoch ohne vollstaendige Ziel-SLO-Abbildung |
| Ethics AI | Messbar | bench_rag_ethics.exe vollstaendig messbar (DLL-Blocker geloest); Artefakt in artifacts/perf_nv/bench_rag_ethics_release.json |
| System-Level (TPC/YCSB) | Produktiv (Lite-Profile) | bench_tpcc und bench_ycsb laufen im aktuellen Build mit produktiven Lite-Cases (TPCCLiteFixture, YCSBLiteFixture); aktuelle Artefakte: bench_tpcc_targeted_v2.json, bench_ycsb_targeted_v2.json |
- Feature-Gating in CMake (
THEMIS_ENABLE_*, GPU/CUDA/HIP/Voice/LLM) verhindert Target-Build in dieser Umgebung. - Benchmark-Datei vorhanden, aber Registrierungen deaktiviert oder nur
*_DisabledBenchmark registriert. - Runtime-Abhaengigkeiten fehlen (GPU, Modelle, HSM-Library, externe Dienste).
- Kein 1:1 Mapping zwischen Ziel-ID und Benchmarkfall; nur Proxy-Metriken verfuegbar.
- Build-Artefakt fehlt trotz Datei (nicht gebaut, aus Ziel ausgeschlossen oder in aktuellem Buildprofil nicht enthalten).
| Prio | Maßnahme | Ursache(n) adressiert | Aufwand | Erfolgskriterium |
|---|---|---|---|---|
| 1 | bench_query.cpp Pagination-Benchmarks wieder registrieren und stabilisieren |
2, 4 | M | BM_Pagination_Offset und BM_Pagination_Cursor laufen ohne Timeout |
| 2 | bench_olap_analytics.cpp von Disabled-Stub auf echte Cases umstellen |
2, 4 | M | mind. 4 produktive OLAP-Analytics-Cases in v1.8.2-Report |
| 3 | 1, 3, 5 | M | Alle 4 Binaries starten und produzieren vollstaendige Artefakte; DLL-Pfad-Fix und Security/Compliance-Benchmarkreparaturen verifiziert | |
| 4 | Voice-Benchmark-Pfad für CI via THEMIS_ENABLE_VOICE_ASSISTANT optionalen Job aktivieren |
1, 5 | S | bench_voice_assistant.exe in Voice-Runner-Build vorhanden |
| 5 | GPU-Benchmark-Matrix (CUDA/HIP/Vulkan) als separaten Runner etablieren | 1, 3 | L | GPU-disabled Stubs werden durch reale Messwerte ersetzt |
| 6 | Modell-/Artefakt-Vorbereitung (LLM, LoRA, gguf) standardisieren | 3 | M | LLM/RAG/LoRA-Benchmarks laufen ohne Missing-Artifact-Fehler |
| 7 | Ziel-ID-zu-Benchmark-Mapping-Datei erzwingen (pro Modul) | 4 | M | jede Ziel-ID in Tabellen hat exakt 1 primären Benchmarkfall |
| 8 | Build-Check „source exists but binary missing“ als CI-Guard ergänzen | 5 | S | CI schlägt fehl, wenn bench_*.cpp ohne entsprechendes Target/Binary bleibt |
| 9 | Disabled-Stub-Policy einführen (max. 1 Release erlaubt, danach Pflichtticket) | 2 | S | jede *_Disabled-Registrierung trägt Deadline und Issue-Referenz |
| 10 | Modulweise Benchmark-Sweeps (2..33) als planbare Nightly-Presets | 1, 3, 4 | L | täglicher Coverage-Report mit Ampel pro Modul und Delta-Vergleich |
- Woche 1: Maßnahmen 1, 2, 3, 8
- Woche 2: Maßnahmen 4, 6, 7, 9
- Parallel/Infra: Maßnahmen 5 und 10
| Bereich | Ziel vs Ist | Evidenz | Wahrscheinlichste Hauptursache | Verifikation (naechster Schritt) |
|---|---|---|---|---|
| Query Engine Throughput | 900 M/s vs 796.4 M/s | Kernmetrik-Tabelle + Query-Detailtabelle + bench_query_targeted.json |
Direkte Query-Cases sind messbar (BM_SimpleWhere ~0,151 ms, BM_ComplexWhere ~0,190 ms, BM_JoinUsersPosts ~0,768 ms); die Luecke betrifft damit primär den Gesamtdurchsatz-Zielwert, nicht mehr fehlende Basisfaelle |
Query-Hotpath profilieren (Parse/Optimize/Execute getrennt) und den Durchsatzpfad gegen das 900-M/s-Kernziel nachmessen |
| Vector Insert | 600 k/s vs 548.7 k/s | Kernmetrik-Tabelle + 36.1 Kern-Performance | Nahe am Ziel, aber Write-/Index-Pfad noch nicht voll batch-optimiert; Restluecke ~8.5 % | Batch/transaction path im Index-Insert vergleichen (single put vs grouped writes), 3 Wiederholungen mit identischer Build-Config |
| Secondary Index Insert | 1.0 M/s vs 254.9 k/s | Kernmetrik-Tabelle + 36.1 + Hinweis zu RocksDB-Transaktions-Overhead | Persistenter Write-Path-Overhead (Transaktion pro put, Write-Amplification, Index-Update-Kosten) | Issue P-2 umsetzen: Batch-Transaktionen fuer SecondaryIndex; direkt A/B Benchmark gegen aktuellen Stand |
| Storage Sustained Write | 100k ops/s vs 1.276k/s (Proxy) | Modul-Ampel + Storage-Tabelle + Hotspot-Proxywerte | Aktueller Proxy ist workload-seitig nicht 1:1 zum SLO; zusaetzlich WAL/Sync-Settings und contention-lastiger Pfad | 1:1 SLO-Benchmark fuer Sustained NVMe Write definieren (feste payload, fsync-policy, threads), dann Ziel neu evaluieren |
| Analytics Ziel-IDs AN-1..AN-10 | AN-10 weiterhin n/v, AN-3/4 ueber Ziel, AN-1/2/5/7/8/9 direkt messbar | bench_olap_targeted.json + Export-Artefakte |
Die Hauptluecke ist nicht mehr die fehlende Messbarkeit, sondern die Zielerreichung und AN-10 als ARM-spezifischer Nachweis | AN-10 auf ARM-Runner validieren; Export-Ziele AN-3/4 separat weiter optimieren |
| System-Level TPCC/YCSB | produktiv, aber als Lite-Profile | bench_tpcc_targeted_v2.json + bench_ycsb_targeted_v2.json |
Die produktiven Lite-Cases laufen wieder; die Werte liegen deutlich unter klassischen TPC-C/YCSB-Zielgroessen und sind deshalb aktuell eher als Funktions-/Pfadvalidierung als als Endleistungsnachweis zu lesen | Dataset-/Workload-Skalierung und stabilere CPU-Zeit-Erfassung (kein 0-us-Pfad) als naechster Schritt |
- Zielmetriken und gemessene Cases sind teilweise nicht 1:1 vergleichbar (Proxy statt Primarfall).
- Build-/Feature-Gates schieben kritische Benchmarks in disabled oder nicht gebaute Pfade.
- Runtime-Abhaengigkeiten (GPU/Modelle/HSM) verhindern reproduzierbare End-to-End Messungen.
- Einige historische Zielwerte wurden auf anderer Infrastruktur/Workload-Definition ermittelt.
- Erst 1:1 Vergleichbarkeit herstellen (gleicher Case, gleiche Konfiguration, gleiche Plattformklasse).
- Dann in drei Ursachenklassen trennen: Implementierungsregression, Infrastruktur-/Abhaengigkeitsproblem, Zieldefinition unpassend.
- Nur nach dieser Trennung Ampelstatus und Prioritaet final setzen.
Diese Grundlogik gilt fuer alle Module:
- Wir kennen die Plattformgrenzen (CPU, RAM-Bandbreite, Storage-Latenz/IOPS, GPU/VRAM, Filesystem/Fsync-Verhalten).
- Wir kennen den internen Themis-Pfad (z. B. Query-Planung, Index-Update, RocksDB-Writes, Locks, Serialisierung, Netzwerkpfade).
- Daraus wird ein technischer Erwartungswert pro Ziel-ID abgeleitet.
Fuer jeden Benchmarkfall wird die Laufzeit in Pfadanteile zerlegt:
- T_total = T_logic + T_index + T_storage + T_sync + T_alloc + T_lock + T_io + T_network
Der erwartete Durchsatz ergibt sich aus:
- Throughput_expected = Work_units / T_total_expected
Die Zielabweichung wird als Effizienz ausgedrueckt:
- Effizienz = Throughput_measured / Throughput_expected
| Effizienzbereich | Interpretation | Typischer Befund |
|---|---|---|
| >= 0.85 | im erwartbaren Bereich | normaler Messrauschanteil / leichte Konfig-Effekte |
| 0.60 bis 0.85 | signifikante Luecke | Overhead in Teilpfad, fehlende Batch-Optimierung, nicht 1:1 vergleichbarer Case |
| < 0.60 | massive Abweichung | starker Overhead oder Programmfehler sehr wahrscheinlich |
Hinweis: Bei Effizienz < 0.60 wird standardmaessig ein Bug-/Overhead-Verdacht gesetzt, bis das Gegenteil belegt ist.
- Konfig-/Umgebungspruefung: gleicher Buildtyp, gleiche Flags, gleiche Datenform, gleiche Hardwareklasse.
- 1:1-Pfadvalidierung: passt der Benchmark wirklich zur Ziel-ID (kein Proxy)?
- Pfadprofiling: welcher Teilpfad dominiert T_total (Index, Storage, Sync, Locking, Serialisierung)?
- A/B-Test mit isolierter Aenderung (z. B. Batch an/aus, WAL/Fsync-Policy, Lock-Strategie).
- Ergebnisbewertung:
- reproduzierbar und pfadspezifisch => Implementierungsregression/Overhead im Codepfad
- nicht reproduzierbar oder konfigabhängig => Infrastruktur-/Benchmark-Setup-Problem
| KPI | Ist-Lage | Primaerer Verdacht |
|---|---|---|
| Secondary Index Insert (rot) | 254.9 k/s vs 1.0 M/s | Write-Pfad-Overhead (Transaktions-/Index-Update-Kosten) |
| Query Throughput (rot in Kernampel) | 796.4 M/s vs 900 M/s | fehlende 1:1-Query-Cases plus Hotpath-Overhead |
| Storage Sustained Write (rot) | 1.276 k/s Proxy vs 100k/s Ziel | derzeit kein 1:1 SLO-Case und zusaetzlicher WAL/Sync-Overhead |
Konsequenz: Massive Abweichungen werden in diesem Dokument als starke Hinweise auf Programmfehler oder ueberhoehten Overhead behandelt, solange keine saubere Gegenbegruendung aus Vergleichbarkeit/Setup vorliegt.
Der integrierte Google-Test HardwareBaseline.CaptureAndPersist schreibt pro Lauf eine JSON-Baseline unter logs/hardware_baseline/.
| Hardware-Funktion | Benchmark-Orientierung (gaengig) | Themis-relevante Pfade | Aktuelle Baseline-Gate (Tier) |
|---|---|---|---|
| CPU SIMD/ISA (SSE4.2, AVX, AVX2, AVX512, FMA, AES, BMI, POPCNT) | CPUID-Feature-Check (industry-standard Capability Detection) | Query-Eval-Hotpaths, Vector/ANN, Hashing, Kompression, Crypto-Pfade | simd: scalar / sse42 / avx2_fma / avx512 |
| RAM-Bandbreite | STREAM-aehnlich (Copy/Scale/Add/Triad) | HashJoin/Aggregation, Arrow/Parquet-Serialisierung, Cache-Hotsets | memory: low (<18 GB/s), medium (>=18), high (>=35) |
| Storage sequentiell | fio-disk-bandwidth-aehnlich (seq read/write MB/s) | RocksDB WAL/Compaction, SSTable-Scan, Snapshot/Export | Teil von storage Tier |
| Storage random | fio-randread/randwrite-aehnlich (4K IOPS) | Point-Lookups, LSM-Read/Write-Amplification, Metadata-IO | storage: hdd_class_or_limited, ssd_class, nvme_class |
| GPU/VRAM Inventar | Adapter/VRAM-Inventar analog zu vendor tooling | CUDA/LLM/Vector-Pfade, Batchgroessen-/Model-Fit | gpu: none_or_unknown, entry, medium, high |
| HDD/SSD-Mediumtyp | Seek-Penalty-Check (OS-Storage-Property) | Erwartungswert fuer Latenz/IOPS und WAL-/fsync-Verhalten | als hdd_drive_type im JSON protokolliert |
Hinweis zu fertigen Libraries/Tools:
- Der aktuelle Stand ist absichtlich als integrierter GTest ohne externe Runtime-Tools implementiert (CI-robust).
- Optional fuer hoehere Messgenauigkeit in dedizierten Bench-Pipelines:
fiofuer ausfuehrliche Storage-Profile,Google Benchmarkfuer stabile Microbenchmark-Statistik,cpu_features(Google) fuer vereinheitlichte CPU-Feature-Erkennung,- GPU-vendor tools (z. B.
nvidia-smi) fuer Telemetrie (Auslastung, Takt, thermische Limits). Diese optionalen Tools sollen die GTest-Baseline ergaenzen, nicht ersetzen.
- Messumfang und Zielmetriken verbindlich festlegen
- CPU: ISA, Integer/Float-Throughput, optional Cache-/NUMA-/PMU-Proxies
- Memory: Host-RAM Copy plus STREAM-like Copy/Scale/Add/Triad
- Storage: sequenziell, 4K-random, fsync-/Flush-Verhalten, Mediumtyp
- GPU: Adapter/VRAM-Inventar; spaeter H2D, D2H, Kernel-Launch, optional P2P
- [~] Baseline-JSON-Schema auf alle benoetigten Messgroessen erweitern
- Pflichtfelder: Messmethode, Payload-Groesse, Iterationen, Warmup, Dateigroesse, Device-ID, Treiber-/Runtime-Kontext
- Ergebnis muss zwischen Hosts und CI-Runs direkt vergleichbar sein
- Fehlende Transferpfade fuer Themis-relevante Datenbewegung ergaenzen
- Host-RAM zu VRAM
- VRAM zu Host-RAM
- CPU zu GPU Dispatch-/Kernel-Start-Latenz
- Storage zu Host-RAM und, falls verfuegbar, Storage zu VRAM als eigener Pfad
- Messumgebung normalisieren und im Artefakt mitschreiben
- CPU-Governor/Takt, Power-Profil, Debug/Release, Compiler-Flags, NUMA-Bindung, Filesystem, freier Speicherplatz, thermische Randbedingungen
- Ziel: weniger Messrauschen und reproduzierbare Vergleichslaeufe
- Hardware-Baselines pro Runner und Host versioniert ablegen
- Ablage als Zeitreihe mit Host-Fingerprint, Build-ID, Commit, Treiberstand und Testpreset
- Ziel: historische Entwicklung statt Einzelwerte
- [~] Themis-Benchmarkklassen explizit auf Hardware-Faktoren abbilden
- Query/AQL/OLAP: CPU SIMD plus Memory
- Storage/WAL/Backup/Ingest: seq/random Storage plus fsync-Verhalten
- Vector/LLM/GPU-Module: VRAM, H2D/D2H, Kernel-Dispatch, optional Multi-GPU/P2P
- Network/Wire: primaer nicht Teil der lokalen Hardware-Baseline, nur getrennt korrelieren
- Gepaarte Messreihen erzeugen
- Pro Host: zuerst Hardware-Baseline, danach definierte Themis-Benchmarks im selben Build und Laufkontext
- Ziel: jede Workload-Messung hat einen passenden Hardware-Snapshot
- Effizienzmetriken pro Benchmarkklasse definieren
- Beispiele: Query-Durchsatz relativ zu CPU-/Memory-Tier, WAL-MB/s relativ zu Storage seq, ANN/LLM relativ zu GPU-/Transfer-Tier
- Ergebnis: normierte Kennzahlen statt isolierter Rohwerte
- Korrelationsregeln zuerst regelbasiert, dann statistisch ableiten
- Phase 1: fachliche Erwartungsmatrix Hardware-Faktor zu Themis-Subsystem
- Phase 2: lineare Korrelation, Rangkorrelation und Residuenanalyse ueber gepaarte Laeufe
- Ziel: echte Bottleneck-Indikatoren statt Bauchgefuehl
- Korrelationsmatrix als Referenzartefakt publizieren
- Zeilen: Themis-Benchmarkklassen/Subsysteme
- Spalten: CPU, Memory, Storage seq, Storage random, fsync, GPU/VRAM, H2D, D2H, Dispatch
- Zellen: erwartete Staerke, gemessene Korrelation, Erklaerung, Ausreisserhinweise
Ziel: Jede Hardware-Messung ist host-uebergreifend reproduzierbar, zwischen CI-Runs vergleichbar und direkt mit Themis-Benchmarks paarkoppelbar.
Implementierungsstand (2026-04-10):
schema_version,run_id,contextundmeasurement_configsind im integrierten GTest-Output aktiv.- Transfermetriken (
host_to_vram_gb_s,vram_to_host_gb_s,cpu_to_gpu_dispatch_us) sind im Schema alsavailable=falsemit Grundnot_implemented_yetvorhanden. - Damit ist die Artefaktstruktur fuer gepaarte Korrelationslaeufe vorbereitet; die eigentliche Transfermessung folgt im naechsten Schritt.
Pflicht-Metadaten je Lauf:
- schema_version
- run_id
- generated_at_utc
- host_fingerprint (cpu_model, logical_cpus, ram_gb, gpu_vendor_device, storage_root)
- build_context (git_commit, build_type, compiler_id, compiler_version, simd_flags)
- os_context (os_name, os_version, kernel_or_build, power_profile)
- runtime_context (driver_version_gpu, api_backend, numa_policy, thermal_state_if_available)
Pflicht-Metadaten je Messung:
- metric_name
- unit
- method
- payload_bytes_or_elements
- warmup_iterations
- measure_iterations
- sample_count
- statistic (min, median, p95, max, stddev)
- measurement_scope (host, device, transfer)
Messregeln (einheitlich fuer alle Hosts):
- Warmup getrennt von Messphase.
- Mindestens 5 Messsamples je Metrik, Median als Standard-Vergleichswert.
- Rechen- und Transfermetriken nicht mischen; getrennte Kennzahlen ausgeben.
- Storage-Messungen mit dokumentierter Dateigroesse und Blockgroesse.
- Bei GPU-Metriken Backend (CUDA/D3D12/anderes) explizit protokollieren.
- Bei fehlender Hardware Metrik als unavailable mit Grund markieren, nicht mit 0.0 fuellen.
Verbindliche Metriken (MVP):
| Bereich | Metrik | Einheit | Mindestmethode |
|---|---|---|---|
| CPU | cpu_integer_ops_per_s, cpu_float_ops_per_s | ops/s | feste Laufzeitfenster, gleiche Datengroesse |
| Memory | stream_copy_gb_s, stream_scale_gb_s, stream_add_gb_s, stream_triad_gb_s | GB/s | STREAM-like, best-of-n mit n dokumentiert |
| Storage | disk_read_mb_s, disk_write_mb_s | MB/s | seq read/write, feste Dateigroesse |
| Storage | disk_random_read_iops, disk_random_write_iops | IOPS | 4K random, feste Ops-Anzahl |
| GPU Inventar | gpu_name, gpu_vram_gb, gpu_vendor_id, gpu_device_id | text, GB, id | primarer dedizierter Adapter |
| Transfer (neu) | host_to_vram_gb_s, vram_to_host_gb_s | GB/s | pageable und optional pinned getrennt |
| Transfer (neu) | cpu_to_gpu_dispatch_us | us | leerer Kernel/Dispatch Overhead |
Interpretation der Staerke:
- H = hoch
- M = mittel
- L = niedrig
- 0 = praktisch keine direkte Korrelation erwartet
| Benchmarkklasse / Subsystem | CPU SIMD | Memory BW | Storage seq | Storage random | fsync/flush | GPU/VRAM | H2D/D2H | Dispatch |
|---|---|---|---|---|---|---|---|---|
| Query/AQL OLTP (Point Lookup, Filter) | H | M | L | H | M | 0 | 0 | 0 |
| Query/AQL OLAP (Scan, Join, Agg) | H | H | M | L | L | 0 | 0 | 0 |
| Index Build CPU (B-Tree, R-Tree, HNSW CPU) | H | H | M | M | L | 0 | 0 | 0 |
| Storage WAL/Compaction/Snapshot | M | M | H | H | H | 0 | 0 | 0 |
| Ingestion Batch (Disk-zentriert) | M | M | H | M | M | 0 | 0 | 0 |
| Vector Search GPU | M | M | L | L | L | H | H | M |
| LLM Inference GPU | M | M | L | L | L | H | H | H |
| Mixed CPU+GPU Pipeline (Embedding + ANN) | H | M | L | L | L | H | H | H |
Effizienz-Template fuer die spaetere Korrelation (pro Klasse):
- expected_capacity = Funktion aus relevanten Hardware-Metriken laut Matrix
- efficiency = measured_themis_metric / expected_capacity
- residual = measured_themis_metric - model_prediction
Korrelationsvorgehen in zwei Stufen:
- Regelbasiert: Erwartungsmatrix liefert die primaeren Einflussfaktoren.
- Statistisch: Ueber gepaarte Hardware- und Benchmarklaeufe werden Pearson/Spearman und Residuen ausgewertet.
Akzeptanzkriterium fuer den Uebergang zur finalen Korrelationsmatrix:
- Mindestens 30 gepaarte Laeufe ueber mindestens 3 Hardwareklassen.
- Fuer jede Benchmarkklasse mindestens ein signifikanter Primaerfaktor mit plausibler Effektstaerke.
Quelle:
- build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json
Aktuelle Baseline-Werte (Kurzfassung):
- SIMD:
avx2_fma - Memory: STREAM triad 21.67 GB/s (
memory=medium) - Storage: seq read 774.89 MB/s, random read 129701.13 IOPS (
storage=ssd_class) - GPU: 11.83 GB VRAM (
gpu=medium) - Transfer: H2D 4.07 GB/s, D2H 3.95 GB/s, Dispatch 497.87 us
Gap gegen die naechste Zielklasse:
| Faktor | Istwert | Naechste Klasse | Schwellwert | Gap | Einordnung |
|---|---|---|---|---|---|
| Memory (triad) | 21.67 GB/s | high |
35.00 GB/s | -13.33 GB/s | deutlicher Abstand zu High-Memory |
| Storage seq read | 774.89 MB/s | nvme_class |
1200.00 MB/s | -425.11 MB/s | sequenzieller Read ist Hauptlimit zum NVMe-Tier |
| Storage random read | 129701.13 IOPS | nvme_class |
50000.00 IOPS | +79701.13 IOPS | Random-IO bereits klar ueber NVMe-Schwelle |
| GPU VRAM | 11.83 GB | high |
16.00 GB | -4.17 GB | mittleres GPU-Tier, kein High-VRAM |
Korrelation zur Erwartungsmatrix (direkte Aussage fuer aktuelle Plattform):
- Query/AQL OLTP: gut durch starke Random-IOPS; primarer Gap liegt nicht in Random-Storage.
- Query/AQL OLAP und CPU-Index-Build: erwartbare Begrenzung durch
memory=mediumstatthigh. - Storage/WAL/Snapshot: sequenzieller Read bleibt der dominante Gap zum NVMe-Profil.
- Vector/LLM GPU-Pfade:
gpu=mediumplus moderate H2D/D2H-Raten deuten auf Bandbreiten- und VRAM-Grenzen bei grossen Batches. - Mixed CPU+GPU Pipelines: Dispatch-Latenz und Transferdurchsatz sind jetzt messbar und koennen als Primaerfaktoren in die Effizienzformeln eingehen.
Methodischer Hinweis:
- Diese Auswertung ist ein einzelner Snapshot (n=1 Lauf) und liefert eine robuste Priorisierung, aber noch keine statistische Signifikanz.
- Fuer belastbare Korrelationen gemaess Abschnitt 1.7.3 sind gepaarte Reihen ueber mehrere Hosts und Wiederholungen erforderlich.
Ziel:
- Hardware-Baselines werden in normierte Erwartungswerte ueberfuehrt.
- Themis-Benchmarkwerte werden als Effizienz relativ zur Hardwareklasse bewertet.
Normalisierte Hardwarefaktoren (0..1, geclamped):
N_cpu = min(cpu_integer_ops_per_s / 8.0e7, 1.0)N_mem = min(stream_triad_gb_s / 35.0, 1.0)N_seq = min(disk_read_mb_s / 1200.0, 1.0)N_rand = min(disk_random_read_iops / 50000.0, 1.0)N_vram = min(gpu_vram_gb / 16.0, 1.0)N_h2d = min(host_to_vram_gb_s / 8.0, 1.0)N_d2h = min(vram_to_host_gb_s / 8.0, 1.0)N_dispatch = min(200.0 / cpu_to_gpu_dispatch_us, 1.0)
Hinweis zu fehlenden Werten:
- Wenn ein Faktor nicht verfuegbar ist, wird er fuer die jeweilige Formel neutral mit 0.5 vorbelegt und als Unsicherheit markiert.
Expected-Capacity-Modelle (erste Version):
| Benchmarkklasse | Expected Capacity (normiert) |
|---|---|
| Query/AQL OLTP | E_oltp = 0.45*N_cpu + 0.20*N_mem + 0.25*N_rand + 0.10*N_seq |
| Query/AQL OLAP | E_olap = 0.40*N_cpu + 0.45*N_mem + 0.15*N_seq |
| Storage WAL/Snapshot | E_storage = 0.20*N_cpu + 0.20*N_mem + 0.35*N_seq + 0.25*N_rand |
| Vector Search GPU | E_vec_gpu = 0.20*N_cpu + 0.15*N_mem + 0.30*N_vram + 0.20*N_h2d + 0.10*N_d2h + 0.05*N_dispatch |
| LLM Inference GPU | E_llm_gpu = 0.15*N_cpu + 0.15*N_mem + 0.35*N_vram + 0.20*N_h2d + 0.05*N_d2h + 0.10*N_dispatch |
| Mixed CPU+GPU Pipeline | E_mixed = 0.25*N_cpu + 0.20*N_mem + 0.20*N_vram + 0.15*N_h2d + 0.10*N_d2h + 0.10*N_dispatch |
Effizienzdefinition je konkretem Benchmark:
efficiency = measured_metric / expected_metricexpected_metric = baseline_reference_for_benchmark * E_classresidual = measured_metric - expected_metric
Interpretation Effizienz:
| efficiency | Bewertung | Interpretation |
|---|---|---|
| >= 0.90 | gut | Verhalten nahe am erwarteten Hardwareprofil |
| 0.75 .. < 0.90 | auffaellig | moeglicher Overhead oder Subsystem-Engpass |
| < 0.75 | kritisch | starke Abweichung, hohe Prioritaet fuer Root-Cause |
Sofort nutzbare Priorisierung mit aktuellem Hardware-Run:
- OLAP/CPU-Index Fokus auf Memory-Effizienz (groesster Klassen-Gap zu
N_mem=1.0). - Storage-Pfade mit seq-read-sensitiven Workloads priorisieren (Gap zu
N_seq=1.0). - GPU-Workloads mit grossem Batch zuerst ueber Transfer-Effizienz (
N_h2d,N_d2h,N_dispatch) bewerten.
Umsetzungsschritt fuer naechsten Zyklus:
- Pro Benchmarkklasse mindestens 3 konkrete Themis-Benchmarks an diese Formelklasse binden.
- Fuer jeden Benchmark
baseline_reference_for_benchmarkdokumentieren und versionieren.
Quelle Hardwarefaktoren fuer diese Initialbindung:
build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json- Daraus abgeleitete Klassenfaktoren:
E_oltp=0.744,E_olap=0.647,E_storage=0.736,E_vec_gpu=0.622,E_llm_gpu=0.620,E_mixed=0.607
Regel fuer die Berechnung je Benchmark (ab jetzt bindend):
expected_metric = baseline_reference_for_benchmark * E_classefficiency = measured_metric / expected_metric
Konkrete Zuordnung (mindestens 3 Benchmarks je Klasse):
| Formelklasse | Konkreter Benchmark | baseline_reference_for_benchmark | measured_metric (aktuell) | Datenquelle |
|---|---|---|---|---|
Query/AQL OLTP (E_oltp) |
QueryEngineBench/SimpleEvaluation | 814.5 M items/s | 796.4 M items/s | v1.3.4 vs v1.8.2 Tabelle |
Query/AQL OLTP (E_oltp) |
BM_CTE_NonRecursive_Simple/10 | 910.2 M/s | 910.2 M/s | CTE-Detailtabelle |
Query/AQL OLTP (E_oltp) |
BM_Subquery_EXISTS_WithoutLIMIT1/1000 | 1.41 M/s | 1.41 M/s | CTE/Subquery-Detailtabelle |
Query/AQL OLAP (E_olap) |
BM_OLAP_Count/1000000 | 242.637 M/s | 242.637 M/s | Analytics-Proxytabelle |
Query/AQL OLAP (E_olap) |
BM_OLAP_GroupBy_Optimized/1000000 | 48.528 M/s | 48.528 M/s | Analytics-Proxytabelle |
Query/AQL OLAP (E_olap) |
BM_OLAP_ComplexQuery/1000000 | 51.613 M/s | 51.613 M/s | Analytics-Proxytabelle |
Storage WAL/Snapshot (E_storage) |
BM_RawWrite_WAL_On/8 | 1.058 k/s | 1.193 k/s | Storage-Skalierungstabelle |
Storage WAL/Snapshot (E_storage) |
BM_MixedRW/8 | 2.534 k/s | 2.534 k/s | Storage-Skalierungstabelle |
Storage WAL/Snapshot (E_storage) |
BM_SecondaryIndex_Write/8 | 1.056 k/s | 1.056 k/s | Storage-Skalierungstabelle |
Vector Search GPU (E_vec_gpu) |
VectorIndexBench/InsertPlaintext | 351.4 k/s | 548.7 k/s | Index-Tabelle v1.3.4 vs v1.8.2 |
Vector Search GPU (E_vec_gpu) |
BM_CPUBackend_DistanceComputation/1000x100000 | 10.63 M/s | 9.95 M/s | Vektor-Backend-Tabelle |
Vector Search GPU (E_vec_gpu) |
BM_VectorDistance_Cosine/256 | 4.9 M/s | 4.9 M/s | Vektor-Kernel-Tabelle |
LLM Inference GPU (E_llm_gpu) |
BM_Combined_LLM_RAG_Pipeline | 15.9 k/s | 15.9 k/s | LLM-Pipeline-Tabelle |
LLM Inference GPU (E_llm_gpu) |
BM_EmbeddingCache_Query_Hit/384 | 155.8 M/s | 155.8 M/s | Cache/Embedding-Tabelle |
LLM Inference GPU (E_llm_gpu) |
BM_HybridSearch_RRF/768 | 7.08 M/s | 7.08 M/s | Hybrid-Search-Tabelle |
Mixed CPU+GPU Pipeline (E_mixed) |
BM_VectorGeoFiltering/32768 | 25.8 M/s | 25.8 M/s | Geo+Vector-Tabelle |
Mixed CPU+GPU Pipeline (E_mixed) |
BM_DB_Ingest_Encrypted/100000 | 27.9 k/s | 27.9 k/s | Security+Ingest-Tabelle |
Mixed CPU+GPU Pipeline (E_mixed) |
BM_Index_Insert_WithEncryptedPayload/100000 | 717.2 k/s | 717.2 k/s | Security+Index-Tabelle |
Einordnung der Initialbindung:
- Die Mindestanforderung von 3 Benchmarks je Klasse ist fuer alle 6 Klassen erfuellt.
- Die obigen
baseline_reference_for_benchmarksind als v0-Referenz fixiert und koennen in den naechsten Runs nur mit Versionssprung aktualisiert werden. - Ab dem naechsten Benchmarkzyklus wird pro Zeile die Effizienz (
measured / expected) und das Residuum verpflichtend mitgefuehrt.
Verwendete Klassenfaktoren aus Abschnitt 1.7.6:
E_oltp=0.744,E_olap=0.647,E_storage=0.736,E_vec_gpu=0.622,E_llm_gpu=0.620,E_mixed=0.607
Beispielrechnung je Klasse:
| Formelklasse | Benchmark | baseline_reference | E_class | expected_metric | measured_metric | efficiency | residual |
|---|---|---|---|---|---|---|---|
| Query/AQL OLTP | QueryEngineBench/SimpleEvaluation | 814.5 M/s | 0.744 | 605.988 M/s | 796.4 M/s | 1.314 | +190.412 M/s |
| Query/AQL OLAP | BM_OLAP_Count/1000000 | 242.637 M/s | 0.647 | 156.986 M/s | 242.637 M/s | 1.545 | +85.651 M/s |
| Storage WAL/Snapshot | BM_RawWrite_WAL_On/8 | 1.058 k/s | 0.736 | 0.779 k/s | 1.193 k/s | 1.532 | +0.414 k/s |
| Vector Search GPU | VectorIndexBench/InsertPlaintext | 351.4 k/s | 0.622 | 218.571 k/s | 548.7 k/s | 2.510 | +330.129 k/s |
| LLM Inference GPU | BM_Combined_LLM_RAG_Pipeline | 15.9 k/s | 0.620 | 9.858 k/s | 15.9 k/s | 1.613 | +6.042 k/s |
| Mixed CPU+GPU Pipeline | BM_Index_Insert_WithEncryptedPayload/100000 | 717.2 k/s | 0.607 | 435.340 k/s | 717.2 k/s | 1.647 | +281.860 k/s |
Interpretation dieses ersten Laufs:
- Alle sechs Beispiel-Benchmarks liegen in dieser v0-Modellierung ueber
efficiency >= 1.0. - Das spricht fuer konservative Referenzen oder eine zu milde Normierung (insbesondere bei Vektor/GPU-Klassen).
- Fuer v1 der Korrelationsregeln muessen die Gewichte und/oder Referenzwerte so kalibriert werden, dass die Effizienz median-nah um
1.0liegt (robust ueber mehrere Hosts).
Ziel der Kalibrierung:
- Effizienzwerte sollen pro Klasse auf Host-Populationsebene um
1.0zentriert sein. - Korrelationen werden als reproduzierbare Regeln fuer Gap-Diagnosen verwendbar.
Voraussetzung fuer jede belastbare Erwartungsbewertung:
- Solange die Klassen-Effizienz nicht auf Host-Populationsebene um
1.0zentriert ist, duerfenE_class,target_hwundscore_hw_neutralnur als vorlaeufige Rohindikatoren verwendet werden. - Verbindliche Erwartungsbewertungen, Release-Gates und Zielanpassungen sind erst nach abgeschlossener Zentrierung zulaessig.
Regeln:
- Pro Klasse wird ein Referenzfenster aus mindestens 30 gepaarten Runs ueber mindestens 3 Hardwareklassen gebildet.
- Kalibrierfaktor je Klasse:
K_class = median(efficiency_raw_class_window). - Kalibrierte Effizienz je Benchmark:
efficiency_calibrated = efficiency_raw / K_class. - Residuum bleibt auf Rohmetrik:
residual = measured_metric - expected_metric_raw. - Signifikante Faktorzuordnung gilt nur, wenn beide Kriterien erfuellt sind:
|corr_spearman(factor, efficiency_calibrated)| >= 0.35p_value <= 0.05
- Stabilitaetsregel je Benchmarkklasse: Koefizientenvariation der kalibrierten Effizienz
CV <= 0.20im Referenzfenster.
Ziel:
K_classdarf nur aus einer bewusst definierten Host-Population abgeleitet werden.
Verbindliche Regeln fuer die Population:
- Mindestens 3 Hardwareklassen muessen vertreten sein:
entry: Entwickler-Notebook oder kleine VMmid: typische CI-/Workstation-Klassehigh: leistungsstarke Workstation oder GPU-Host
- Pro Hardwareklasse muessen mindestens 10 vollstaendige gepaarte Runs vorliegen.
- Ein gepaarter Run besteht immer aus:
- einem Hardware-Baseline-Artefakt
- einem Benchmark-Artefakt desselben Laufzyklus
- identischer Build-Konfiguration fuer beide Artefakte
- Hosts mit instabiler Messumgebung werden ausgeschlossen, wenn eine der Bedingungen verletzt ist:
- CPU-Frequenz stark schwankend oder Energiesparprofil aktiv
- thermische Drosselung waehrend des Runs
- fehlende NUMA-/GPU-/Storage-Metadaten
- Reproduzierbarkeit schlechter als
CV > 0.20fuer denselben Benchmark auf demselben Host
Minimaler Pflicht-Metadatensatz je Host:
host_idcpu_modelcore_countmemory_gbstorage_classgpu_namegpu_vram_gbos_namebuild_typecompiler_idcompiler_version
Ziel:
K_classwird nicht aus Einzelbenchmarks, sondern aus einem stabilen Klassen-Set bestimmt.
Pflichtregel je Klasse:
- Pro Klasse muessen mindestens 3 Benchmarks verwendet werden.
- Die Benchmarks muessen denselben primaeren Ressourcenpfad repraesentieren.
- Ein Benchmark darf nur einer Primaerklasse fuer die Kalibrierung zugeordnet werden.
Initiales Pflicht-Set fuer die Zentrierung:
| Klasse | Pflicht-Benchmarks fuer K_class |
|---|---|
| Query/AQL OLTP | QueryEngineBench/SimpleEvaluation, BM_CTE_NonRecursive_Simple/10, BM_Subquery_EXISTS_WithoutLIMIT1/1000 |
| Query/AQL OLAP | BM_OLAP_Count/1000000, BM_OLAP_GroupBy_Optimized/1000000, BM_OLAP_ComplexQuery/1000000 |
| Storage WAL/Snapshot | BM_RawWrite_WAL_On/8, BM_MixedRW/8, BM_SecondaryIndex_Write/8 |
| Vector Search GPU | VectorIndexBench/InsertPlaintext, BM_CPUBackend_DistanceComputation/1000x100000, BM_VectorDistance_Cosine/256 |
| LLM Inference GPU | BM_Combined_LLM_RAG_Pipeline, BM_EmbeddingCache_Query_Hit/384, BM_HybridSearch_RRF/768 |
| Mixed CPU+GPU Pipeline | BM_VectorGeoFiltering/32768, BM_DB_Ingest_Encrypted/100000, BM_Index_Insert_WithEncryptedPayload/100000 |
Austauschregel:
- Ein Benchmark aus dem Pflicht-Set darf nur ersetzt werden, wenn er technisch obsolet, instabil oder fachlich nicht mehr repraesentativ ist.
- Jeder Austausch erfordert Versionssprung von
K_classund dokumentierte Migrationsnotiz.
Ziel:
- Kalibrierfaktoren muessen reproduzierbar, auditierbar und vergleichbar versioniert werden.
Verbindliches Publikationsformat pro Klasse:
| Feld | Bedeutung |
|---|---|
calibration_version |
fortlaufende Version, z. B. kclass-v1 |
class_name |
Benchmarkklasse |
population_window |
enthaltener Zeitraum oder Run-Bereich |
host_count |
Anzahl unterschiedlicher Hosts |
run_count |
Anzahl gepaarter Runs |
benchmark_set |
verwendete Benchmarks |
k_class |
Median der Roh-Effizienz |
cv_class |
Stabilitaet der kalibrierten Klasse |
notes |
bekannte Einschraenkungen oder Ausreisserbehandlung |
Governance fuer neue Versionen:
K_classwird nur neu versioniert, wenn mindestens eine dieser Bedingungen eintritt:- Benchmark-Set geaendert
- Host-Population strukturell erweitert
- Messmethodik oder Baseline-Schema geaendert
- Medianverschiebung groesser gleich
10 %
- Jede neue Version muss die vorherige Version referenzieren und die Differenz begruenden.
- Performance-Bewertungen muessen immer die verwendete
calibration_versionmitfuehren.
Banding fuer die operative Bewertung (auf efficiency_calibrated):
| Bereich | Bewertung | Operative Bedeutung |
|---|---|---|
< 0.85 |
kritisch | hoher Handlungsdruck, wahrscheinlich systemischer Engpass |
0.85 .. < 0.95 |
auffaellig | beobachtbar unter Erwartung, Root-Cause starten |
0.95 .. 1.05 |
normal | im erwarteten Korridor |
> 1.05 |
ueber Erwartung | positive Abweichung, moegliche Baseline-Rekalibrierung pruefen |
Basislauf:
build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json
Verwendete normalisierte Faktoren aus diesem Lauf:
N_cpu=0.679,N_mem=0.619,N_seq=0.646,N_rand=1.000,N_vram=0.739,N_h2d=0.509,N_d2h=0.494,N_dispatch=0.402
Abgeleitete Gap-Komponenten (G_i = 1 - N_i) mit Klassenaggregation:
| Klasse | E_class | Gap-Score 1-E_class |
Dominante Gap-Faktoren (absteigend) | Prioritaet |
|---|---|---|---|---|
| Mixed CPU+GPU Pipeline | 0.607 | 0.393 | CPU, Memory, H2D-Transfer, Dispatch | 1 |
| LLM Inference GPU | 0.620 | 0.380 | H2D-Transfer, VRAM, Dispatch | 2 |
| Vector Search GPU | 0.622 | 0.378 | H2D-Transfer, VRAM, CPU | 3 |
| Query/AQL OLAP | 0.647 | 0.353 | Memory, CPU, Seq-Storage | 4 |
| Storage WAL/Snapshot | 0.736 | 0.264 | Seq-Storage, CPU/Memory | 5 |
| Query/AQL OLTP | 0.744 | 0.256 | CPU, Memory | 6 |
Operative Lesart der v0-Matrix:
- Der staerkste erwartete Gap liegt in gemischten CPU+GPU-Pfaden, getrieben durch Transfer und Dispatch sowie mittlere CPU/Memory-Werte.
- Reine OLTP-Pfade sind im aktuellen Hardwareprofil vergleichsweise am wenigsten limitiert, da Random-IO bereits im Zielkorridor liegt.
- Fuer GPU-nahe Klassen ist PCIe-Transfer (
N_h2d,N_d2h) zusammen mit Dispatch-Latenz der dominantere Hebel als reine VRAM-Groesse.
Publikationsstatus:
- Diese Matrix ist als v0 regelbasiert freigegeben.
- Upgrade auf v1 statistisch kalibriert erfolgt nach Erfuellung der Datenmengenregel aus Abschnitt 1.7.8.
Grundsatz:
- Modul-Erwartungswerte werden nicht mehr als starre absolute Zahl ohne Hardwarebezug bewertet.
- Die operative Sollgroesse wird pro Host aus technischer Machbarkeit (Hardware-Baseline) abgeleitet.
Verbindliche Ableitung je Benchmark:
- Produktziel bleibt als absolute Referenz erhalten (
target_product). - Hardwarefaehigkeit wird ueber die Klassenfunktion bestimmt (
E_class, kalibriert nach Abschnitt 1.7.8). - Hardware-normalisierter Erwartungswert:
target_hw = target_product * E_class_calibrated
- Bewertungskennzahl fuer hardware-neutrale Vergleichbarkeit:
score_hw_neutral = measured_metric / target_hw
Wichtige Einschraenkung:
- Vor abgeschlossener Zentrierung ist stattdessen nur
score_hw_raw = measured_metric / (target_product * E_class_raw)zulaessig. score_hw_rawdient ausschliesslich zur Modellinspektion und darf nicht als finales Pass/Fail-Signal verwendet werden.
Interpretation von score_hw_neutral:
| Bereich | Bewertung |
|---|---|
< 0.90 |
unter technisch machbarer Erwartung |
0.90 .. 1.10 |
im hardware-neutralen Sollkorridor |
> 1.10 |
ueber Soll (Potenzial fuer Zielanhebung oder Modell-Rekalibrierung) |
Governance-Regeln:
- Release-Entscheidungen fuer Performance richten sich primaer nach
score_hw_neutral, nicht nach rohen Absolutwerten ohne Hardwarebezug. - Absolute Produktziele bleiben fuer Capacity-Planung und Roadmap-Kommunikation sichtbar, werden aber technisch immer gegen
target_hwgespiegelt. - Bei
score_hw_neutral < 0.90in zwei aufeinanderfolgenden Runs ist ein Root-Cause-Ticket verpflichtend. - Bei
score_hw_neutral > 1.10ueber mindestens 3 Hosts wird die Zielmetrik oder Kalibrierung zur Anhebung vorgeschlagen.
Vor der Zentrierung gilt ersatzweise:
score_hw_rawdarf nur als Hinweis auf zu milde oder zu strenge Modellierung gelesen werden.- Weder
ueber-sollnochkritischaus dem Rohmodell duerfen als verbindliche Modulbewertung publiziert werden.
Konsequenz:
- Damit wird die Benchmarkbewertung im Tagesbetrieb weitgehend hardware-neutral, ohne die strategischen Produktziele zu verlieren.
Verwendung:
- Pro Benchmarklauf wird diese Tabelle pro relevanter Metrikzeile gefuellt.
- Nach abgeschlossener Zentrierung sind
target_hwundscore_hw_neutralPflichtfelder. - Vorher sind
target_hw_rawundscore_hw_rawals vorlaeufige Felder zu verwenden.
| run_id | module | benchmark | class | target_product | E_class_raw | target_hw_raw | measured_metric | score_hw_raw | status_raw | baseline_file |
|---|---|---|---|---|---|---|---|---|---|---|
| <E_class_raw> | <target_product*E_class_raw> | <measured/target_hw_raw> | <roh: kritisch/normal/ueber-soll> | <hardware_baseline_json> |
Statuslogik (verbindlich):
score_hw_neutral < 0.90->kritisch0.90 <= score_hw_neutral <= 1.10->normalscore_hw_neutral > 1.10->ueber-soll
Ausgefuelltes Beispiel (aktueller Lauf, noch unzentrierter Rohstatus):
| run_id | module | benchmark | class | target_product | E_class_raw | target_hw_raw | measured_metric | score_hw_raw | status_raw | baseline_file |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-04-10-hw-1775806092 | Query | QueryEngineBench/SimpleEvaluation | Query/AQL OLTP | 750.0 M items/s | 0.744 | 558.000 M items/s | 796.4 M items/s | 1.427 | ueber-soll | build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json |
| 2026-04-10-hw-1775806092 | Index | VectorIndexBench/InsertPlaintext | Vector Search GPU | 280.0 k/s | 0.622 | 174.160 k/s | 548.7 k/s | 3.150 | ueber-soll | build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json |
| 2026-04-10-hw-1775806092 | Storage | BM_RawWrite_WAL_On/8 | Storage WAL/Snapshot | 1.0 k/s | 0.736 | 0.736 k/s | 1.193 k/s | 1.621 | ueber-soll | build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json |
Bewertungsregel:
target_hw_raw = target_product * E_class_rawscore_hw_raw = measured_metric / target_hw_raw
Auswertung fuer die aktuell messbaren Erwartungen im Dokument:
| Modul | Benchmark | target_product | E_class_raw | target_hw_raw | measured_metric | score_hw_raw | Rohbewertung |
|---|---|---|---|---|---|---|---|
| Query | QueryEngineBench/SimpleEvaluation | 750.0 M items/s | 0.744 | 558.000 M items/s | 796.4 M items/s | 1.427 | ueber-soll |
| Index | VectorIndexBench/InsertPlaintext | 280.0 k/s | 0.622 | 174.160 k/s | 548.7 k/s | 3.150 | ueber-soll |
| Index | SecondaryIndexBench/IndexInsert | 180.0 k/s | 0.736 | 132.480 k/s | 254.9 k/s | 1.924 | ueber-soll |
| Cache | C-1 Proxy (BM_EmbeddingCache_Query_WithIndex/100000) | 5.0 M ops/s | 0.744 | 3.720 M ops/s | 5.851 M ops/s | 1.573 | ueber-soll |
Kurzfazit (nur Rohmodell, noch nicht release-tauglich):
- Alle vier derzeit direkt vergleichbaren Expectations liegen im unzentrierten Rohmodell ueber dem Roh-Sollkorridor.
- Das ist primaer ein Kalibrierungssignal:
E_class_rawist aktuell zu konservativ und muss vor jeder finalen Erwartungsbewertung zentriert werden. - Erst nach Zentrierung auf Host-Populationsebene wird aus
score_hw_rawein belastbarerscore_hw_neutral.
Regel:
- Jede Zeile mit explizitem
n/vin den primaeren Modultabellen bekommt genau eine primaere Messquelle. - Wenn der exakte Case im genannten File noch nicht existiert, ist dieses File der verbindliche Erweiterungspunkt.
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| Simple AQL WHERE | benchmarks/bench_query.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_query.exe --benchmark_out=artifacts/perf_nv/query_simple_aql_where.json --benchmark_out_format=json |
artifacts/perf_nv/query_simple_aql_where.json |
| Complex WHERE | benchmarks/bench_query.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_query.exe --benchmark_out=artifacts/perf_nv/query_complex_where.json --benchmark_out_format=json |
artifacts/perf_nv/query_complex_where.json |
| JOIN (Users-Posts) | benchmarks/bench_query.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_query.exe --benchmark_out=artifacts/perf_nv/query_join_users_posts.json --benchmark_out_format=json |
artifacts/perf_nv/query_join_users_posts.json |
| Parse + Optimize P99 (10 Collections) | benchmarks/bench_adaptive_query_compilation.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_adaptive_query_compilation.exe --benchmark_out=artifacts/perf_nv/query_parse_optimize_p99.json --benchmark_out_format=json |
artifacts/perf_nv/query_parse_optimize_p99.json |
| Query-Cache Lookup P99 (Exact) | benchmarks/bench_adaptive_query_cache.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_adaptive_query_cache.exe --benchmark_out=artifacts/perf_nv/query_cache_exact_p99.json --benchmark_out_format=json |
artifacts/perf_nv/query_cache_exact_p99.json |
| Query-Cache Lookup P99 (Semantic) | benchmarks/bench_adaptive_query_cache.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_adaptive_query_cache.exe --benchmark_out=artifacts/perf_nv/query_cache_semantic_p99.json --benchmark_out_format=json |
artifacts/perf_nv/query_cache_semantic_p99.json |
| JIT Erstcompilierung | benchmarks/bench_adaptive_query_compilation.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_adaptive_query_compilation.exe --benchmark_out=artifacts/perf_nv/query_jit_first_compile.json --benchmark_out_format=json |
artifacts/perf_nv/query_jit_first_compile.json |
| Federation Plan-Overhead (5 Cluster) | benchmarks/bench_distributed_coordinator.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_distributed_coordinator.exe --benchmark_out=artifacts/perf_nv/query_federation_plan_overhead.json --benchmark_out_format=json |
artifacts/perf_nv/query_federation_plan_overhead.json |
| Streaming First-Chunk Latenz | benchmarks/bench_api_endpoints.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_api_endpoints.exe --benchmark_out=artifacts/perf_nv/query_streaming_first_chunk.json --benchmark_out_format=json |
artifacts/perf_nv/query_streaming_first_chunk.json |
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| SecondaryIndexBench/RawWriteOnly | benchmarks/bench_core_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_core_performance.exe --benchmark_out=artifacts/perf_nv/index_raw_write_only.json --benchmark_out_format=json |
artifacts/perf_nv/index_raw_write_only.json |
| Small Index Insert (1K entities) | benchmarks/bench_core_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_core_performance.exe --benchmark_out=artifacts/perf_nv/index_small_insert_1k.json --benchmark_out_format=json |
artifacts/perf_nv/index_small_insert_1k.json |
| Medium Index Insert (100K) | benchmarks/bench_core_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_core_performance.exe --benchmark_out=artifacts/perf_nv/index_medium_insert_100k.json --benchmark_out_format=json |
artifacts/perf_nv/index_medium_insert_100k.json |
| Large Index Lookup (1M) | benchmarks/bench_core_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_core_performance.exe --benchmark_out=artifacts/perf_nv/index_large_lookup_1m.json --benchmark_out_format=json |
artifacts/perf_nv/index_large_lookup_1m.json |
| Composite Index Lookup | benchmarks/bench_core_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_core_performance.exe --benchmark_out=artifacts/perf_nv/index_composite_lookup.json --benchmark_out_format=json |
artifacts/perf_nv/index_composite_lookup.json |
| L2Distance/1000/512 | benchmarks/bench_vector_search.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_vector_search.exe --benchmark_out=artifacts/perf_nv/index_l2distance_1000_512.json --benchmark_out_format=json |
artifacts/perf_nv/index_l2distance_1000_512.json |
| CosineDistance/1000/512 | benchmarks/bench_vector_search.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_vector_search.exe --benchmark_out=artifacts/perf_nv/index_cosine_1000_512.json --benchmark_out_format=json |
artifacts/perf_nv/index_cosine_1000_512.json |
| TopK/5000/50 | benchmarks/bench_vector_search.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_vector_search.exe --benchmark_out=artifacts/perf_nv/index_topk_5000_50.json --benchmark_out_format=json |
artifacts/perf_nv/index_topk_5000_50.json |
| HNSW Vektor-Suche (CPU) | benchmarks/bench_vector_search.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_vector_search.exe --benchmark_out=artifacts/perf_nv/index_hnsw_cpu.json --benchmark_out_format=json |
artifacts/perf_nv/index_hnsw_cpu.json |
| HNSW Vektor-Suche (GPU RTX-class) | benchmarks/bench_gpu_vector_index.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_gpu_vector_index.exe --benchmark_out=artifacts/perf_nv/index_hnsw_gpu.json --benchmark_out_format=json |
artifacts/perf_nv/index_hnsw_gpu.json |
| B-Tree Point-Lookup P99 (10M Keys) | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/index_btree_point_lookup_p99.json --benchmark_out_format=json |
artifacts/perf_nv/index_btree_point_lookup_p99.json |
| R-Tree Spatial Range Query P99 | benchmarks/bench_spatial_index.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_spatial_index.exe --benchmark_out=artifacts/perf_nv/index_rtree_spatial_range_p99.json --benchmark_out_format=json |
artifacts/perf_nv/index_rtree_spatial_range_p99.json |
| GPU Index-Build (1M x 128-dim) | benchmarks/bench_gpu_vector_index.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_gpu_vector_index.exe --benchmark_out=artifacts/perf_nv/index_gpu_build_1m_128.json --benchmark_out_format=json |
artifacts/perf_nv/index_gpu_build_1m_128.json |
| RocksDB WriteBatch Commit P99 | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/index_writebatch_commit_p99.json --benchmark_out_format=json |
artifacts/perf_nv/index_writebatch_commit_p99.json |
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| C-2 L2 Hit-Path | benchmarks/bench_embedding_cache_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_embedding_cache_performance.exe --benchmark_out=artifacts/perf_nv/cache_l2_hit_path.json --benchmark_out_format=json |
artifacts/perf_nv/cache_l2_hit_path.json |
| C-3 L3 Hit-Path P99 | benchmarks/bench_embedding_cache_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_embedding_cache_performance.exe --benchmark_out=artifacts/perf_nv/cache_l3_hit_p99.json --benchmark_out_format=json |
artifacts/perf_nv/cache_l3_hit_p99.json |
| C-4 Warmup Throughput | benchmarks/bench_adaptive_query_cache.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_adaptive_query_cache.exe --benchmark_out=artifacts/perf_nv/cache_warmup_throughput.json --benchmark_out_format=json |
artifacts/perf_nv/cache_warmup_throughput.json |
| C-5 Admin-API Response | benchmarks/bench_api_endpoints.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_api_endpoints.exe --benchmark_out=artifacts/perf_nv/cache_admin_api_response.json --benchmark_out_format=json |
artifacts/perf_nv/cache_admin_api_response.json |
| C-6 Prefetch Latenz | benchmarks/bench_random_access_prefetch.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_random_access_prefetch.exe --benchmark_out=artifacts/perf_nv/cache_prefetch_latency.json --benchmark_out_format=json |
artifacts/perf_nv/cache_prefetch_latency.json |
| C-7 Prefetch Overfetch | benchmarks/bench_random_access_prefetch.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_random_access_prefetch.exe --benchmark_out=artifacts/perf_nv/cache_prefetch_overfetch.json --benchmark_out_format=json |
artifacts/perf_nv/cache_prefetch_overfetch.json |
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| INSERT 1 KB | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_insert_1kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_insert_1kb.json |
| READ 1 KB | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_read_1kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_read_1kb.json |
| UPDATE 1 KB | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_update_1kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_update_1kb.json |
| INSERT 10 KB | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_insert_10kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_insert_10kb.json |
| INSERT 100 KB | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_insert_100kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_insert_100kb.json |
| INSERT 1 MB | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_insert_1mb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_insert_1mb.json |
| Concurrent 1 Client | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_concurrent_1_client.json --benchmark_out_format=json |
artifacts/perf_nv/storage_concurrent_1_client.json |
| Concurrent 5 Clients | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_concurrent_5_clients.json --benchmark_out_format=json |
artifacts/perf_nv/storage_concurrent_5_clients.json |
| Concurrent 50 Clients | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_concurrent_50_clients.json --benchmark_out_format=json |
artifacts/perf_nv/storage_concurrent_50_clients.json |
| Sustained Write NVMe | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_sustained_write_nvme.json --benchmark_out_format=json |
artifacts/perf_nv/storage_sustained_write_nvme.json |
| Point-Read Latenz P99 | benchmarks/bench_storage_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exe --benchmark_out=artifacts/perf_nv/storage_point_read_p99.json --benchmark_out_format=json |
artifacts/perf_nv/storage_point_read_p99.json |
| Incremental Backup | benchmarks/bench_snapshot_manager.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_snapshot_manager.exe --benchmark_out=artifacts/perf_nv/storage_incremental_backup.json --benchmark_out_format=json |
artifacts/perf_nv/storage_incremental_backup.json |
| 1MB Blob Storage | benchmarks/bench_blob_zstd.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_blob_zstd.exe --benchmark_out=artifacts/perf_nv/storage_blob_1mb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_blob_1mb.json |
| 10KB Thumbnail Storage | benchmarks/bench_blob_zstd.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_blob_zstd.exe --benchmark_out=artifacts/perf_nv/storage_thumbnail_10kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_thumbnail_10kb.json |
| 100KB Blob Retrieval | benchmarks/bench_blob_zstd.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_blob_zstd.exe --benchmark_out=artifacts/perf_nv/storage_blob_retrieval_100kb.json --benchmark_out_format=json |
artifacts/perf_nv/storage_blob_retrieval_100kb.json |
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| AN-1 Streaming Aggregation Memory | benchmarks/bench_olap_performance.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_olap_performance.exe --benchmark_out=artifacts/perf_nv/analytics_streaming_aggregation_memory.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_streaming_aggregation_memory.json |
| AN-2 IVM Delta-Application | benchmarks/bench_update_pipeline.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_update_pipeline.exe --benchmark_out=artifacts/perf_nv/analytics_ivm_delta_apply.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_ivm_delta_apply.json |
| AN-3 Parquet Export 1M Rows | benchmarks/bench_exporters.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_exporters.exe --benchmark_out=artifacts/perf_nv/analytics_parquet_export_1m.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_parquet_export_1m.json |
| AN-4 CSV Export 1M Rows | benchmarks/bench_exporters.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_exporters.exe --benchmark_out=artifacts/perf_nv/analytics_csv_export_1m.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_csv_export_1m.json |
| AN-5 CEPEngine::stop() | benchmarks/bench_update_pipeline.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_update_pipeline.exe --benchmark_out=artifacts/perf_nv/analytics_cep_stop.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_cep_stop.json |
| AN-7 IsolationForest Training | benchmarks/bench_advanced_patterns.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_advanced_patterns.exe --benchmark_out=artifacts/perf_nv/analytics_isolation_forest_training.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_isolation_forest_training.json |
| AN-8 predictBatch() | benchmarks/bench_advanced_patterns.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_advanced_patterns.exe --benchmark_out=artifacts/perf_nv/analytics_predict_batch.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_predict_batch.json |
| AN-9 Auto-Tune Grid | benchmarks/bench_advanced_patterns.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_advanced_patterns.exe --benchmark_out=artifacts/perf_nv/analytics_auto_tune_grid.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_auto_tune_grid.json |
| AN-10 ARM NEON Aggregation | benchmarks/bench_arm_simd.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_arm_simd.exe --benchmark_out=artifacts/perf_nv/analytics_arm_neon_aggregation.json --benchmark_out_format=json |
artifacts/perf_nv/analytics_arm_neon_aggregation.json |
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| TS-2 Gorilla Decode Throughput | benchmarks/bench_gorilla_codec.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_gorilla_codec.exe --benchmark_out=artifacts/perf_nv/timeseries_gorilla_decode_throughput.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_gorilla_decode_throughput.json |
| TS-3 Range Scan P99 (1M pts) | benchmarks/bench_timeseries_ingestion.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_timeseries_ingestion.exe --benchmark_out=artifacts/perf_nv/timeseries_range_scan_p99.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_range_scan_p99.json |
| TS-4 Continuous Aggregate Refresh | benchmarks/bench_timeseries_adaptive_flush.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_timeseries_adaptive_flush.exe --benchmark_out=artifacts/perf_nv/timeseries_continuous_aggregate_refresh.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_continuous_aggregate_refresh.json |
| TS-5 Write Amplification | benchmarks/bench_timeseries_adaptive_flush.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_timeseries_adaptive_flush.exe --benchmark_out=artifacts/perf_nv/timeseries_write_amplification.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_write_amplification.json |
| TS-6 Downsampling Throughput | benchmarks/bench_timeseries_ingestion.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_timeseries_ingestion.exe --benchmark_out=artifacts/perf_nv/timeseries_downsampling_throughput.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_downsampling_throughput.json |
| TS-7 Storage Reduction | benchmarks/bench_gorilla_codec.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_gorilla_codec.exe --benchmark_out=artifacts/perf_nv/timeseries_storage_reduction.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_storage_reduction.json |
| TS-10 Gorilla Insert P99 | benchmarks/bench_timeseries_ingestion.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_timeseries_ingestion.exe --benchmark_out=artifacts/perf_nv/timeseries_gorilla_insert_p99.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_gorilla_insert_p99.json |
| TS-11 AES-256-GCM Throughput | benchmarks/bench_security.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_security.exe --benchmark_out=artifacts/perf_nv/timeseries_aes256_gcm_throughput.json --benchmark_out_format=json |
artifacts/perf_nv/timeseries_aes256_gcm_throughput.json |
| n/v-Zeile | Benchmark-File | Messkommando | Zielartefakt |
|---|---|---|---|
| Sparse Graph Edge Addition | benchmarks/bench_graph_traversal.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_traversal.exe --benchmark_out=artifacts/perf_nv/graph_sparse_edge_addition.json --benchmark_out_format=json |
artifacts/perf_nv/graph_sparse_edge_addition.json |
| Dense Graph Neighbor Query | benchmarks/bench_graph_traversal.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_traversal.exe --benchmark_out=artifacts/perf_nv/graph_dense_neighbor_query.json --benchmark_out_format=json |
artifacts/perf_nv/graph_dense_neighbor_query.json |
| Graph BFS Traversal (Depth-3) | benchmarks/bench_graph_traversal.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_traversal.exe --benchmark_out=artifacts/perf_nv/graph_bfs_depth3.json --benchmark_out_format=json |
artifacts/perf_nv/graph_bfs_depth3.json |
| RAG Search Top-50 | benchmarks/bench_rag_hybrid_retriever.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_rag_hybrid_retriever.exe --benchmark_out=artifacts/perf_nv/graph_rag_search_top50.json --benchmark_out_format=json |
artifacts/perf_nv/graph_rag_search_top50.json |
| Algorithmus-Selektion P99 (10M Nodes) | benchmarks/bench_graph_query_optimizer.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_query_optimizer.exe --benchmark_out=artifacts/perf_nv/graph_algorithm_selection_p99.json --benchmark_out_format=json |
artifacts/perf_nv/graph_algorithm_selection_p99.json |
| Plan-Cache Lookup P99 | benchmarks/bench_graph_query_optimizer.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_query_optimizer.exe --benchmark_out=artifacts/perf_nv/graph_plan_cache_lookup_p99.json --benchmark_out_format=json |
artifacts/perf_nv/graph_plan_cache_lookup_p99.json |
| Single-Refresh (10K Nodes) | benchmarks/bench_graph_query_optimizer.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_query_optimizer.exe --benchmark_out=artifacts/perf_nv/graph_single_refresh_10k.json --benchmark_out_format=json |
artifacts/perf_nv/graph_single_refresh_10k.json |
| Subgraph-Isomorphismus P95 | benchmarks/bench_graph_query_optimizer.cpp |
build-msvc-ninja-release/cmake/benchmarks/bench_graph_query_optimizer.exe --benchmark_out=artifacts/perf_nv/graph_subgraph_isomorphism_p95.json --benchmark_out_format=json |
artifacts/perf_nv/graph_subgraph_isomorphism_p95.json |
Ziel:
- Aus der Quellenmatrix wird eine direkte Arbeitsreihenfolge fuer belastbare Messwertgewinnung.
Definition:
sofort messbar: Benchmark-Datei und passender Themenbezug sind vorhanden; der Fall kann ohne neue Quelldatei angegangen werden.erweitern: Benchmark-Datei existiert, aber der konkrete Expectation-Case ist sehr wahrscheinlich noch als eigener Benchcase zu ergaenzen.neu anlegen: Es gibt noch keinen belastbaren primaeren Benchcase; neue Benchmark-Implementierung ist erforderlich.runtime blocker: Benchmark-Binary ist vorhanden oder ableitbar, aber Ausfuehrung scheitert aktuell an Laufzeitabhaengigkeiten (z. B. fehlende DLLs).
Sofort messbar, hohe Prioritaet:
| Modul | n/v-Zeile | Benchmark-File | Einstufung | Prioritaet |
|---|---|---|---|---|
| Query | Simple AQL WHERE | benchmarks/bench_query.cpp |
sofort messbar | 1 |
| Query | Complex WHERE | benchmarks/bench_query.cpp |
sofort messbar | 2 |
| Query | JOIN (Users-Posts) | benchmarks/bench_query.cpp |
sofort messbar | 3 |
| Index | SecondaryIndexBench/RawWriteOnly | benchmarks/bench_core_performance.cpp |
sofort messbar | 4 |
| Index | L2Distance/1000/512 | benchmarks/bench_vector_search.cpp |
sofort messbar | 5 |
| Index | CosineDistance/1000/512 | benchmarks/bench_vector_search.cpp |
sofort messbar | 6 |
| Index | TopK/5000/50 | benchmarks/bench_vector_search.cpp |
sofort messbar | 7 |
| Cache | C-4 Warmup Throughput | benchmarks/bench_adaptive_query_cache.cpp |
sofort messbar | 8 |
| Storage | INSERT 1 KB | benchmarks/bench_storage_performance.cpp |
sofort messbar | 9 |
| Storage | READ 1 KB | benchmarks/bench_storage_performance.cpp |
sofort messbar | 10 |
| Storage | UPDATE 1 KB | benchmarks/bench_storage_performance.cpp |
sofort messbar | 11 |
| Storage | Sustained Write NVMe | benchmarks/bench_storage_performance.cpp |
sofort messbar | 12 |
| Storage | Point-Read Latenz P99 | benchmarks/bench_storage_performance.cpp |
sofort messbar | 13 |
| Analytics | AN-3 Parquet Export 1M Rows | benchmarks/bench_exporters.cpp |
sofort messbar | 14 |
| Analytics | AN-4 CSV Export 1M Rows | benchmarks/bench_exporters.cpp |
sofort messbar | 15 |
| Timeseries | TS-2 Gorilla Decode Throughput | benchmarks/bench_gorilla_codec.cpp |
sofort messbar | 16 |
| Timeseries | TS-6 Downsampling Throughput | benchmarks/bench_timeseries_ingestion.cpp |
sofort messbar | 17 |
| Timeseries | TS-11 AES-256-GCM Throughput | benchmarks/bench_security.cpp |
runtime blocker | 18 |
| Graph | Sparse Graph Edge Addition | benchmarks/bench_graph_traversal.cpp |
sofort messbar | 19 |
| Graph | Dense Graph Neighbor Query | benchmarks/bench_graph_traversal.cpp |
sofort messbar | 20 |
| Graph | Graph BFS Traversal (Depth-3) | benchmarks/bench_graph_traversal.cpp |
sofort messbar | 21 |
Benchmark-Erweiterung noetig, mittlere Prioritaet:
| Modul | n/v-Zeile | Benchmark-File | Einstufung | Grund |
|---|---|---|---|---|
| Query | Parse + Optimize P99 (10 Collections) | benchmarks/bench_adaptive_query_compilation.cpp |
erweitern | P99/10-Collections-Fall explizit absichern |
| Query | Query-Cache Lookup P99 (Exact) | benchmarks/bench_adaptive_query_cache.cpp |
erweitern | exakter P99-Hit-Pfad separat ausweisen |
| Query | Query-Cache Lookup P99 (Semantic) | benchmarks/bench_adaptive_query_cache.cpp |
erweitern | semantischer Lookup als eigener Case noetig |
| Query | JIT Erstcompilierung | benchmarks/bench_adaptive_query_compilation.cpp |
erweitern | Erstcompile-Zeit separat labeln |
| Query | Federation Plan-Overhead (5 Cluster) | benchmarks/bench_distributed_coordinator.cpp |
erweitern | 5-Cluster-Planfall separat noetig |
| Query | Streaming First-Chunk Latenz | benchmarks/bench_api_endpoints.cpp |
erweitern | First-chunk statt Gesamtrequest erfassen |
| Index | HNSW Vektor-Suche (CPU) | benchmarks/bench_vector_search.cpp |
erweitern | expliziter HNSW-Search-Case noetig |
| Index | HNSW Vektor-Suche (GPU RTX-class) | benchmarks/bench_gpu_vector_index.cpp |
erweitern | GPU-HNSW-Search separat ausweisen |
| Index | B-Tree Point-Lookup P99 (10M Keys) | benchmarks/bench_storage_performance.cpp |
erweitern | 10M-Key-P99-Fall separat noetig |
| Index | R-Tree Spatial Range Query P99 | benchmarks/bench_spatial_index.cpp |
erweitern | P99 statt Durchschnitt explizit messen |
| Index | GPU Index-Build (1M x 128-dim) | benchmarks/bench_gpu_vector_index.cpp |
erweitern | Build-Laufzeit separat labeln |
| Index | RocksDB WriteBatch Commit P99 | benchmarks/bench_storage_performance.cpp |
erweitern | Commit-P99 separat erfassen |
| Cache | C-2 L2 Hit-Path | benchmarks/bench_embedding_cache_performance.cpp |
erweitern | L2-spezifischen Pfad explizit aufnehmen |
| Cache | C-3 L3 Hit-Path P99 | benchmarks/bench_embedding_cache_performance.cpp |
erweitern | L3/P99 separat ausweisen |
| Cache | C-5 Admin-API Response | benchmarks/bench_api_endpoints.cpp |
erweitern | Cache-Admin-Endpunkt fehlt als Case |
| Cache | C-6 Prefetch Latenz | benchmarks/bench_random_access_prefetch.cpp |
erweitern | Latenzkennzahl separat ausgeben |
| Cache | C-7 Prefetch Overfetch | benchmarks/bench_random_access_prefetch.cpp |
erweitern | Overfetch-Metrik separat zaehlen |
| Storage | Incremental Backup | benchmarks/bench_snapshot_manager.cpp |
erweitern | inkrementellen Durchsatz separat labeln |
| Storage | 1MB Blob Storage | benchmarks/bench_blob_zstd.cpp |
erweitern | 1MB-Pfad explizit labeln |
| Storage | 10KB Thumbnail Storage | benchmarks/bench_blob_zstd.cpp |
erweitern | Thumbnail-Fall explizit labeln |
| Storage | 100KB Blob Retrieval | benchmarks/bench_blob_zstd.cpp |
erweitern | Retrieval-Fall explizit labeln |
| Analytics | AN-1 Streaming Aggregation Memory | benchmarks/bench_olap_performance.cpp |
erweitern | Memory-Footprint statt nur Throughput noetig |
| Analytics | AN-2 IVM Delta-Application | benchmarks/bench_update_pipeline.cpp |
erweitern | Delta-Apply explizit messen |
| Analytics | AN-5 CEPEngine::stop() | benchmarks/bench_update_pipeline.cpp |
erweitern | CEP-Lifecycle-Stop fehlt |
| Analytics | AN-7 IsolationForest Training | benchmarks/bench_advanced_patterns.cpp |
erweitern | Training-Case explizit noetig |
| Analytics | AN-8 predictBatch() | benchmarks/bench_advanced_patterns.cpp |
erweitern | predictBatch-Fall explizit noetig |
| Analytics | AN-9 Auto-Tune Grid | benchmarks/bench_advanced_patterns.cpp |
erweitern | 9-Konfigurationen separat ausweisen |
| Analytics | AN-10 ARM NEON Aggregation | benchmarks/bench_arm_simd.cpp |
erweitern | ARM-Runner + Analytics-nahe Aggregation noetig |
| Timeseries | TS-3 Range Scan P99 (1M pts) | benchmarks/bench_timeseries_ingestion.cpp |
erweitern | Range-Scan-P99 explizit noetig |
| Timeseries | TS-4 Continuous Aggregate Refresh | benchmarks/bench_timeseries_adaptive_flush.cpp |
erweitern | Continuous-Aggregate-Fall fehlt |
| Timeseries | TS-5 Write Amplification | benchmarks/bench_timeseries_adaptive_flush.cpp |
erweitern | Write-Amplification als Kennzahl fehlt |
| Timeseries | TS-7 Storage Reduction | benchmarks/bench_gorilla_codec.cpp |
erweitern | Reduktionsquote explizit publizieren |
| Timeseries | TS-10 Gorilla Insert P99 | benchmarks/bench_timeseries_ingestion.cpp |
erweitern | Insert-P99 separat labeln |
| Graph | RAG Search Top-50 | benchmarks/bench_rag_hybrid_retriever.cpp |
erweitern | Top-50/ops explizit ausweisen |
| Graph | Algorithmus-Selektion P99 (10M Nodes) | benchmarks/bench_graph_query_optimizer.cpp |
erweitern | P99-Fall separat noetig |
| Graph | Plan-Cache Lookup P99 | benchmarks/bench_graph_query_optimizer.cpp |
erweitern | Cache-Lookup-P99 separat noetig |
| Graph | Single-Refresh (10K Nodes) | benchmarks/bench_graph_query_optimizer.cpp |
erweitern | Refresh-Fall explizit noetig |
| Graph | Subgraph-Isomorphismus P95 | benchmarks/bench_graph_query_optimizer.cpp |
erweitern | P95 separat ausweisen |
Noch ohne belastbaren primaeren Benchcase, niedrige Prioritaet:
| Modul | n/v-Zeile | Aktueller Erweiterungspunkt | Einstufung |
|---|---|---|---|
| Replication | R-1 bis R-8 | benchmarks/bench_replication_throughput.cpp |
neu anlegen |
| Sharding | SH-1 bis SH-12 | benchmarks/bench_sharding_performance.cpp |
neu anlegen |
| Transaction | TX-1, TX-2, TX-4 bis TX-8 | benchmarks/bench_transaction_throughput.cpp |
neu anlegen |
| LLM | L-1 bis L-8 | benchmarks/bench_llm_inference_performance.cpp |
neu anlegen |
| RAG | RA-1 bis RA-8 | benchmarks/bench_rag_hybrid_retriever.cpp |
neu anlegen |
| Search | SE-1 bis SE-6 | benchmarks/bench_rag_hybrid_retriever.cpp |
neu anlegen |
| Temporal | TM-1 bis TM-6 | benchmarks/bench_temporal_queries.cpp |
neu anlegen |
| API | API-1 bis API-7 | benchmarks/bench_api_endpoints.cpp |
neu anlegen |
| Auth | AUT-1 bis AUT-5 | benchmarks/bench_auth_token_validation.cpp |
neu anlegen |
Empfohlene Reihenfolge fuer die erste Messwelle:
- Alle
sofort messbar-Faelle zuerst ausfuehren, weil sie ohne Codeaenderung den Kalibrierdatensatz vergroessern. - Danach
erweitern-Faelle modulweise in der Reihenfolge Query -> Index -> Storage -> Cache -> Timeseries -> Analytics -> Graph umsetzen. neu anlegenerst beginnen, wenn die Kalibrierung aus den vorhandenen Benchfamilien nicht mehr sinnvoll vorankommt.
Aktueller Build-Befund:
- Die benoetigten Targets der ersten Messwelle sind in der aktuellen CMake-Target-Liste vorhanden.
- Der Multi-Target-Build der ersten Welle ist erfolgreich durchgelaufen; fuer alle zehn Targets wurden EXE-Dateien erzeugt.
- Die gebauten Executables liegen aktuell unter
build-msvc-ninja-release/cmake/benchmarks/<target>.exe. - Die erwartete Zielstruktur
build-msvc-ninja-release/bin/benchmarksist weiterhin nicht materialisiert. - Der verbleibende operative Unterschied ist damit kein Build-Fehler mehr, sondern nur noch ein nicht ausgefuehrter Install-Schritt in die dokumentierte Zielstruktur.
Build-Voraussetzung fuer die erste Welle:
- Alle unten genannten Targets sind als EXE im Build-Output verfuegbar.
- Aktuell nutzbarer Pfad fuer Messlaeufe:
build-msvc-ninja-release/cmake/benchmarks/<target>.exe - Erwarteter Pfad nach optionalem Install-Schritt:
build-msvc-ninja-release/bin/benchmarks/<target>.exe
Verifizierte CMake-Targets aus Welle 1:
bench_querybench_core_performancebench_vector_searchbench_adaptive_query_cachebench_storage_performancebench_exportersbench_gorilla_codecbench_timeseries_ingestionbench_securitybench_graph_traversal
Gebaut und als EXE verifiziert:
build-msvc-ninja-release/cmake/benchmarks/bench_query.exebuild-msvc-ninja-release/cmake/benchmarks/bench_core_performance.exebuild-msvc-ninja-release/cmake/benchmarks/bench_vector_search.exebuild-msvc-ninja-release/cmake/benchmarks/bench_adaptive_query_cache.exebuild-msvc-ninja-release/cmake/benchmarks/bench_storage_performance.exebuild-msvc-ninja-release/cmake/benchmarks/bench_exporters.exebuild-msvc-ninja-release/cmake/benchmarks/bench_gorilla_codec.exebuild-msvc-ninja-release/cmake/benchmarks/bench_timeseries_ingestion.exebuild-msvc-ninja-release/cmake/benchmarks/bench_security.exebuild-msvc-ninja-release/cmake/benchmarks/bench_graph_traversal.exe
Run-Plan Welle 1 (nur sofort messbar):
| Reihenfolge | Ziel | Target | Erwartetes Artefakt |
|---|---|---|---|
| 1 | Simple AQL WHERE | bench_query |
artifacts/perf_nv/query_simple_aql_where.json |
| 2 | Complex WHERE | bench_query |
artifacts/perf_nv/query_complex_where.json |
| 3 | JOIN (Users-Posts) | bench_query |
artifacts/perf_nv/query_join_users_posts.json |
| 4 | SecondaryIndexBench/RawWriteOnly | bench_core_performance |
artifacts/perf_nv/index_raw_write_only.json |
| 5 | L2Distance/1000/512 | bench_vector_search |
artifacts/perf_nv/index_l2distance_1000_512.json |
| 6 | CosineDistance/1000/512 | bench_vector_search |
artifacts/perf_nv/index_cosine_1000_512.json |
| 7 | TopK/5000/50 | bench_vector_search |
artifacts/perf_nv/index_topk_5000_50.json |
| 8 | C-4 Warmup Throughput | bench_adaptive_query_cache |
artifacts/perf_nv/cache_warmup_throughput.json |
| 9 | INSERT 1 KB | bench_storage_performance |
artifacts/perf_nv/storage_insert_1kb.json |
| 10 | READ 1 KB | bench_storage_performance |
artifacts/perf_nv/storage_read_1kb.json |
| 11 | UPDATE 1 KB | bench_storage_performance |
artifacts/perf_nv/storage_update_1kb.json |
| 12 | Sustained Write NVMe | bench_storage_performance |
artifacts/perf_nv/storage_sustained_write_nvme.json |
| 13 | Point-Read Latenz P99 | bench_storage_performance |
artifacts/perf_nv/storage_point_read_p99.json |
| 14 | AN-3 Parquet Export 1M Rows | bench_exporters |
artifacts/perf_nv/analytics_parquet_export_1m.json |
| 15 | AN-4 CSV Export 1M Rows | bench_exporters |
artifacts/perf_nv/analytics_csv_export_1m.json |
| 16 | TS-2 Gorilla Decode Throughput | bench_gorilla_codec |
artifacts/perf_nv/timeseries_gorilla_decode_throughput.json |
| 17 | TS-6 Downsampling Throughput | bench_timeseries_ingestion |
artifacts/perf_nv/timeseries_downsampling_throughput.json |
| 18 | TS-11 AES-256-GCM Throughput | bench_security |
artifacts/perf_nv/timeseries_aes256_gcm_throughput.json |
| 19 | Sparse Graph Edge Addition | bench_graph_traversal |
artifacts/perf_nv/graph_sparse_edge_addition.json |
| 20 | Dense Graph Neighbor Query | bench_graph_traversal |
artifacts/perf_nv/graph_dense_neighbor_query.json |
| 21 | Graph BFS Traversal (Depth-3) | bench_graph_traversal |
artifacts/perf_nv/graph_bfs_depth3.json |
Abnahmekriterium fuer Welle 1:
- Zu jedem der 21 Faelle existiert ein JSON-Artefakt.
- Jeder Lauf ist mit einem Hardware-Baseline-Artefakt desselben Laufzyklus gepaart.
- Erst danach werden die Ergebnisse in den Kalibrier-Datensatz fuer
K_classuebernommen.
Hardware-Baseline-Artefakt (gepaart): build-msvc-ninja-release/logs/hardware_baseline/hardware_baseline_gtest_1775806092.json
DLL-PATH-Konfiguration benoetigt: build-msvc-ninja-release/cmake + build-msvc-ninja-release/bin
| Run-Plan-Zeile | Benchmark-Ziel | Status | Erzeugtes Artefakt | Schluessel-Messwert |
|---|---|---|---|---|
| 1 | Simple AQL WHERE | ✅ | artifacts/perf_nv/query_simple_aql_where.json |
BM_SimpleWhere: 0,2023 ms |
| 2 | Complex WHERE | ✅ | artifacts/perf_nv/query_complex_where.json |
BM_ComplexWhere: 0,2183 ms |
| 3 | JOIN (Users-Posts) | ✅ | artifacts/perf_nv/query_join_users_posts.json |
BM_JoinUsersPosts: 0,9755 ms |
| 4 | SecondaryIndexBench/RawWriteOnly | ✅ | artifacts/perf_nv/core_performance.json |
RawWriteOnly: 162.620 ns / 749,6 k/s (Ziel: 500 k/s ✅) |
| 5 | L2Distance/1000/512 | ✅ | artifacts/perf_nv/index_l2distance_1000_512.json |
BM_L2Distance_1000_512: 0,0719 ms, 13.904 qps |
| 6 | CosineDistance/1000/512 | ✅ | artifacts/perf_nv/index_cosine_1000_512.json |
BM_CosineDistance_1000_512: 0,8105 ms, 1.234 qps |
| 7 | TopK/5000/50 | ✅ | artifacts/perf_nv/index_topk_5000_50.json |
BM_TopK_5000_50: 3,0651 ms, 326 qps |
| 8 | C-4 Warmup Throughput | artifacts/perf_nv/cache_warmup_throughput.json |
BM_WarmupFromLog/10000/4: 443.077 Entries/s; BM_WarmupFromLog/100000/2: 336.842 Entries/s | |
| 9 | INSERT 1 KB | artifacts/perf_nv/storage_performance.json |
Benchmark enthaelt Allocator/Memory/RCU, NICHT Storage-INSERT (Scope-Delta) | |
| 10 | READ 1 KB | artifacts/perf_nv/storage_performance.json |
wie Zeile 9 | |
| 11 | UPDATE 1 KB | artifacts/perf_nv/storage_performance.json |
wie Zeile 9 | |
| 12 | Sustained Write NVMe | artifacts/perf_nv/storage_performance.json |
wie Zeile 9 | |
| 13 | Point-Read Latenz P99 | artifacts/perf_nv/storage_performance.json |
BM_Allocator_Themis_Small: 160,6 M ops/s; BM_RCU_Read/threads:8: 1,39 G ops/s | |
| 14 | AN-3 Parquet Export 1M Rows | ✅ | artifacts/perf_nv/exporters_1m_throughput.json |
BM_Export_Parquet_1M: ~125k items/s |
| 15 | AN-4 CSV Export 1M Rows | ✅ | artifacts/perf_nv/exporters_csv_1m_final.json |
BM_Export_CSV_1M: ~128k items/s |
| 16 | TS-2 Gorilla Decode Throughput | ✅ | artifacts/perf_nv/gorilla_codec.json |
BM_GorillaSIMDDecode_Throughput/100000: 267,1 MB/s decoded |
| 17 | TS-6 Downsampling Throughput | ✅ | artifacts/perf_nv/timeseries_downsampling_throughput.json |
BM_DownsamplingThroughput: ~1.9M pts/s, 60 Buckets/iter à 1min, P99-Bucket-Latenz=44µs |
| 18 | TS-11 AES-256-GCM Throughput | ✅ | artifacts/perf_nv/security.json |
BM_AES256GCM_Encrypt_1MB: 238.660 ns; FieldEncryption/FieldDecryption aktuell nicht im Artefakt enthalten |
| 19 | Sparse Graph Edge Addition | ✅ | artifacts/perf_nv/graph_sparse_edge_addition.json |
GraphTraversalBenchmarkFixture/SparseEdgeAddition/1000/4: 3,019 ms, 331,27 edges/s |
| 20 | Dense Graph Neighbor Query | ✅ | artifacts/perf_nv/graph_dense_neighbor_query.json |
GraphTraversalBenchmarkFixture/DenseNeighborQuery/1000/20: 0,003767 ms, 265.480 qps, 14,74 neighbors/query |
| 21 | Graph BFS Traversal (Depth-3) | ✅ | artifacts/perf_nv/graph_traversal.json |
BFSTraversal/100/4: 0,200 ms, 5.738,7 items/s |
Legende: ✅ gemessen |
Zusammenfassung Welle 1:
- 15 von 21 Zeilen vollstaendig gemessen (✅)
- 6 Zeilen: Scope-Delta oder Teilmessung (
⚠️ ) - 0 Zeilen: Laufzeit-Crash (❌)
Offene Punkte fuer Welle 2:
- Storage Run-Plan 9-13 weiter haerten: 1KB-Payload-Varianten und SLO-nahe Sustained-NVMe-Profile als dedizierte Cases nachziehen (aktuell CRUD-Baseline vorhanden, aber nicht voll 1:1 zu allen SLO-Parametern).
- TS-11 vervollstaendigen: dedizierte FieldEncryption/FieldDecryption-Cases wieder in das Security-Artefakt aufnehmen und explizit reporten.
| Prio | Ziel-ID / Benchmark-Ziel | Aktueller Stand (Welle 1) | Fehlender 1:1-Benchcase | Ziel-Target Welle 2 | Konkrete Umsetzung | Abnahme fuer Schliessen der Luecke |
|---|---|---|---|---|---|---|
| P0 | Query: Simple/Complex/JOIN (Run-Plan 1-3) | ✅ dedizierte Cases aktiv; QPS+P99+Skalierung liegen vor (query_latency_p99.json, query_scaled.json), Pagination-A/B gemessen (query_pagination_2010_refresh.json, query_pagination_5050.json), historischer Querymix gemessen (query_historical_method.json: N=10000, warmup=50, qps≈450/s, mean=2,31 ms, P99=9,67 ms) |
bench_query |
✅ Datensatz- und Query-Setup an v1.3.4-Methode angeglichen, Gegenlauf gemessen | ✅ Vergleich gegen Query-SLOs ohne Benchmark-Methodik-Drift | |
| P0 | C-4 Warmup Throughput (Run-Plan 8) | ✅ Crash behoben; Gemessen: 10K/4-workers: 443K entries/s, 100K/4-workers: 305K entries/s (Ziel: 500K/s → ~2× speedup vs 1-worker baseline 83K/s) | Warmup-Messung funktioniert, Parallelisierung nachgewiesen | bench_adaptive_query_cache |
✅ Crash gefixt (l3_db_path), BM_WarmupFromLog ausgeführt |
cache_warmup_throughput.json mit Parallelisierungsergebnissen |
| P0 | TS-11 Field Encryption Teilabdeckung | Feldverschluesselung/-entschluesselung als dedizierte Cases noch nachzuziehen | bench_security |
Security-Bench laeuft stabil, aber Artefaktabdeckung fuer Field-* ist unvollstaendig | security.json (derzeit AES/RBAC/PQ/FIPS/AQL/Audit; ohne Field-* Eintraege) |
|
| P1 | Storage CRUD (Run-Plan 9-13) | ✅ CRUD-Cases implementiert: BM_StorageInsert (~300 ops/s WAL-on), BM_StorageRead (~1.6M ops/s cached), BM_StorageUpdate (~300 ops/s WAL-on), BM_SustainedWrite/16 (~2.4k ops/s), BM_PointReadP99 (P99=1us, 20k samples) |
INSERT/READ/UPDATE/SustainedWrite/PointReadP99 implementiert auf RocksDBWrapper::put()/get() |
bench_hotspots_micro + Artifact artifacts/perf_nv/storage_crud_wave2.json |
✅ Alle 5 CRUD-Cases laufen, Baseline-Artefakt gespeichert | 5 JSON-Ergebnisse in storage_crud_wave2.json mit 1:1-Namensmapping |
| P1 | TS-6 Downsampling Throughput (Run-Plan 17) | ✅ BM_DownsamplingThroughput: 1.9M pts/s, 60×1-min Buckets, P99=44µs/Bucket | bench_timeseries_ingestion (neu CMake-registriert) |
✅ BM_DownsamplingThroughput standalone-implementiert; TimeSeriesStore-Fixture-Doppel-Open-Bug gefixt | timeseries_downsampling_throughput.json mit 1.906M pts/s, P99-Bucket=44µs |
|
| P1 | AN-3 / AN-4 Exporters 1M | ✅ Gemessen: An-3 Parquet 125.98k items/s (32.2 MB/s, 9.47 sec/1M), AN-4 CSV 128.26k items/s (32.8 MB/s, 9.09 sec/1M) | Batched export throughput mit JSONL-Proxy etabliert (100x10K entities) | bench_exporters |
✅ BM_Export_Parquet_1M + BM_Export_CSV_1M implementiert; beide Benchmarks kompilieren und laufen | ✅ Artefakte: exporters_1m_throughput.json + exporters_csv_1m_final.json; Durchsatz-Baseline dokumentiert (WAVE2_P1_EXPORTERS_SUMMARY.md) |
| P2 | Index L2/Cosine/TopK | ✅ Exakte Cases implementiert: BM_L2Distance_1000_512, BM_CosineDistance_1000_512, BM_TopK_5000_50 |
1:1-Abdeckung inkl. eigener Artefakte erreicht | bench_vector_search |
✅ Registrierungen + Messlauf + JSON-Ausgabe pro Zielfall abgeschlossen | index_l2distance_1000_512.json, index_cosine_1000_512.json, index_topk_5000_50.json |
| P2 | Graph Run-Plan 19-20 | ✅ dedizierte Cases implementiert (SparseEdgeAddition, DenseNeighborQuery) |
1:1-Abdeckung fuer 19/20 vorhanden | bench_graph_traversal |
✅ Registrierungen + Messlauf fuer beide Cases abgeschlossen | graph_sparse_edge_addition.json + graph_dense_neighbor_query.json |
Reihenfolge fuer Umsetzung in Welle 2:
- P0 zuerst (Messbarkeit/Crash-Fix), dann P1 (fachliche 1:1-Abdeckung), danach P2 (Feinabdeckung).
- Nach jedem Fix sofort JSON-Artefakt erzeugen und in Abschnitt 1.7.15a den Status von ❌/
⚠️ auf ✅ heben. - Jede neue Messung mit demselben Hardware-Baseline-Artefaktzyklus paaren.
Vollstaendige Artefakt-Liste Welle 1:
| Artefakt | Groesse | Enthaltene Benchmarks |
|---|---|---|
artifacts/perf_nv/query_simple_aql_where.json |
~1.5 KB | BM_SimpleWhere (dedizierter 1:1-Case) |
artifacts/perf_nv/query_complex_where.json |
~1.5 KB | BM_ComplexWhere (dedizierter 1:1-Case) |
artifacts/perf_nv/query_join_users_posts.json |
~2.0 KB | BM_JoinUsersPosts (dedizierter 1:1-Case) |
artifacts/perf_nv/query_latency_p99.json |
~3 KB | BM_SimpleWhere_P99, BM_ComplexWhere_P99, BM_JoinUsersPosts_P99 |
artifacts/perf_nv/query_scaled.json |
~5 KB | BM_Scaled/1000 und BM_Scaled/10000 |
artifacts/perf_nv/query_pagination_2010_refresh.json |
~2 KB | BM_Pagination_Offset/20/10, BM_Pagination_Cursor/20/10 |
artifacts/perf_nv/query_pagination_5050.json |
~2 KB | BM_Pagination_Offset/50/50, BM_Pagination_Cursor/50/50 |
artifacts/perf_nv/query_historical_profile_2010.json |
~3.4 KB | BM_Pagination_*/20/10 + BM_SimpleWhere + BM_ComplexWhere + BM_JoinUsersPosts |
artifacts/perf_nv/query_historical_profile_5050.json |
~3.4 KB | BM_Pagination_*/50/50 + BM_SimpleWhere + BM_ComplexWhere + BM_JoinUsersPosts |
artifacts/perf_nv/query_historical_method.json |
~2.5 KB | BM_QueryMix_Historical (N=10000, warmup=50, querymix 60/30/10), BM_QueryMix_Historical_P99 |
artifacts/perf_nv/core_performance.json |
~8 KB | VectorIndexBench, SIMDDistanceThroughput, SecondaryIndexBench, QueryEngineBench, GraphIndexBench, TimeseriesBench |
artifacts/perf_nv/vector_search.json |
~4 KB | BM_VectorSearch_efSearch (32/64/128/256), BM_VectorInsert_Batch100 (64/128) |
artifacts/perf_nv/storage_performance.json |
~10 KB | BM_Allocator_, BM_Memory_, BM_RCU_*, BM_Memory_Overhead |
artifacts/perf_nv/gorilla_codec.json |
~8 KB | BM_GorillaEncode/Decode (Constant/Sine/Random), BM_GorillaSIMDDecode, BM_GorillaScalarDecode_Throughput |
artifacts/perf_nv/timeseries_ingestion.json |
~4 KB | BM_GorillaCompression/Decompression (100/1000/10000) |
artifacts/perf_nv/timeseries_gorilla.json |
~4 KB | BM_GorillaCompression/Decompression (100/1000/10000) — Duplikat, zweiter Lauf |
artifacts/perf_nv/exporters.json |
~8 KB | BM_JsonlExport_BatchThroughput, BM_JsonlExport_FormatTemplate, BM_JsonlExport_Compressed, BM_StreamingExport_Throughput, BM_IncrementalExport_Full/Delta |
artifacts/perf_nv/security.json |
~10 KB | BM_AES256GCM (1KB/64KB/1MB), BM_RBAC, BM_PostQuantum (Kyber/Dilithium), BM_FIPS, BM_AQLInjection, BM_AuditLog |
artifacts/perf_nv/graph_traversal.json |
~1.5 KB | GraphTraversalBenchmarkFixture/BFSTraversal/100/4 (repräsentativer BFS-Lauf) |
artifacts/perf_nv/graph_sparse_edge_addition.json |
~2 KB | GraphTraversalBenchmarkFixture/SparseEdgeAddition/1000/4, /10000/4 |
artifacts/perf_nv/graph_dense_neighbor_query.json |
~2 KB | GraphTraversalBenchmarkFixture/DenseNeighborQuery/1000/20 (dedizierter 1:1-Case) |
Quelle:
BENCHMARK_RESULTS.md(Run 2025-12-18),benchmark_summary.csv(Run 2025-12-29)
| Benchmark | Ziel | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|
| Simple AQL WHERE | 10.000 Queries/s bei P99 < 20 ms | 3,43 M ops/s @ ~0,3 | 0,2023 ms (~4.943 q/s), P99 0,562 ms (BM_SimpleWhere_P99) |
|
| Complex WHERE | 1 M ops/s | 3,35 M ops/s | 0,2183 ms (~4.581 q/s), P99 0,321 ms (BM_ComplexWhere_P99) |
|
| JOIN (Users-Posts) | 5 M ops/s | 10,2 M ops/s | 0,9755 ms (~1.025 q/s), P99 1,739 ms (BM_JoinUsersPosts_P99) |
|
| QueryEngineBench/SimpleEvaluation | 750 M items/s | 814,5 M items/s (1,23 ns) | 603,6 M items/s (1,72 ns, Welle-1) | |
| Parse + Optimize P99 (10 Collections) | 5 ms | n/v | ||
| Query-Cache Lookup P99 (Exact) | < 1 ms | n/v | ||
| Query-Cache Lookup P99 (Semantic) | 10 ms | n/v | ||
| JIT Erstcompilierung | 50 ms | n/v | ||
| Federation Plan-Overhead (5 Cluster) | 20 ms | n/v | ||
| Streaming First-Chunk Latenz | 50 ms | n/v |
Quelle: artifacts/perf_nv/query_scaled.json (Welle-1, dedizierte Query-Cases)
| Case | N=1000 | N=10000 | Faktor (N10k/N1k) | Bewertung |
|---|---|---|---|---|
| BM_SimpleWhere_Scaled | 0,197 ms (~5.075 q/s) | 1,664 ms (~601 q/s) | 8,45x | deutliche Skalierungskosten |
| BM_ComplexWhere_Scaled | 0,216 ms (~4.635 q/s) | 1,237 ms (~809 q/s) | 5,73x | sublinear, aber stark fallender QPS |
| BM_JoinUsersPosts_Scaled | 1,003 ms (~997 q/s) | 9,002 ms (~111 q/s) | 8,98x | JOIN-Pfad stark datensatzsensitiv |
Interpretation:
- Die aktuelle QPS-Luecke gegen historische Zielwerte wird wesentlich von Datensatzgroesse/Workload-Form beeinflusst.
- P99 bleibt fuer alle drei Cases im ms-Bereich deutlich unter den Latenz-SLOs; der Engpass liegt im Durchsatz unter groesserem N.
- Fuer einen fairen Versionsvergleich muss die v1.3.4-Workloadmethodik (Datensatz, Querymix, Warmup) explizit reproduziert werden.
Quelle: artifacts/perf_nv/query_pagination_2010_refresh.json, artifacts/perf_nv/query_pagination_5050.json
| Case | CPU-Zeit 20/10 | CPU-Zeit 50/50 | ms/Item 20/10 | ms/Item 50/50 | QPS 20/10 | QPS 50/50 | Delta-Einordnung |
|---|---|---|---|---|---|---|---|
| BM_Pagination_Offset | 3,55 ms | 62,50 ms | 0,0178 | 0,0625 | 56.320/s | 16.000/s | pro Item ~3,5x langsamer bei groesserer Seiten-/Page-Anzahl |
| BM_Pagination_Cursor | 4,34 ms | 8,68 ms | 0,0217 | 0,0087 | 46.080/s | 115.200/s | pro Item ~2,5x schneller (amortisiert bei groesseren Seiten) |
Interpretation:
- Der starke Performance-Einbruch betrifft primär Offset-Pagination bei erhoehter Page-Anzahl.
- Cursor-Pagination skaliert im gleichen A/B-Vergleich deutlich besser und wird mit groesserem Fetch-Batch effizienter.
- Die Methodik-Drift ist damit teilweise quantifiziert; fuer den finalen historischen Vergleich fehlen weiterhin Datensatz-/Querymix-/Warmup-Abgleich ausserhalb der Pagination-Parameter.
Quelle: artifacts/perf_nv/query_historical_profile_2010.json, artifacts/perf_nv/query_historical_profile_5050.json
| Case | 20/10-Profil | 50/50-Profil | Delta | Einordnung |
|---|---|---|---|---|
| BM_SimpleWhere (CPU ms/Query) | 0,1939 ms (~5.158 q/s) | 0,1946 ms (~5.139 q/s) | +0,4 % | praktisch unveraendert |
| BM_ComplexWhere (CPU ms/Query) | 0,2336 ms (~4.282 q/s) | 0,2093 ms (~4.778 q/s) | -10,4 % | leichte Verbesserung innerhalb Normalstreuung/Run-Noise |
| BM_JoinUsersPosts (CPU ms/Query) | 0,9438 ms (~1.060 q/s) | 0,9705 ms (~1.030 q/s) | +2,8 % | weitgehend stabil |
| BM_Pagination_Offset (CPU ms/Item) | 0,019097 | 0,062500 | +227 % | deutlicher Nachteil fuer Offset bei hoher Seitenzahl |
| BM_Pagination_Cursor (CPU ms/Item) | 0,021484 | 0,008333 | -61 % | deutlicher Vorteil fuer Cursor bei hoher Seitenzahl |
Interpretation:
- Die Core-Query-Cases (Simple/Complex/JOIN) bleiben zwischen beiden Profilen im Wesentlichen stabil; die groessten Abweichungen liegen im einstelligen bis niedrigen zweistelligen Prozentbereich.
- Die signifikante Methodik-Differenz liegt in der Pagination-Strategie: Offset degradiert stark, Cursor verbessert sich bei groesserem Batch deutlich.
- Fuer den naechsten Schritt des historischen 1:1-Abgleichs sollten Datensatzgroesse, Warmup-Dauer und Querymix explizit auf v1.3.4 angeglichen werden; der reine Parameter-Effekt ist nun messbar abgegrenzt.
Quelle: artifacts/perf_nv/query_historical_method.json
Benchmark-Code: BM_QueryMix_Historical, BM_QueryMix_Historical_P99 in benchmarks/bench_query.cpp
Methodik-Parameter:
| Parameter | Wert |
|---|---|
| Datensatz N | 10.000 Eintraege (bench_users + bench_posts, 3 Posts/User) |
| Warmup-Iterationen | 50 Queries (vor Messung, ohne Timing) |
| Querymix-Verteilung | 60 % BM_SimpleWhere / 30 % BM_ComplexWhere / 10 % BM_JoinUsersPosts (Round-Robin) |
| P99-Stichprobenzahl | 300 Samples pro Benchmark-Iteration |
Messergebnisse:
| Benchmark | CPU-Zeit | qps_est | mean_us | p99_us | N | Warmup |
|---|---|---|---|---|---|---|
| BM_QueryMix_Historical | 2,22 ms/Iter | ~450 q/s | — | — | 10.000 | 50 |
| BM_QueryMix_Historical_P99 | 703 ms/Loop | ~432 q/s | 2.313 µs (2,31 ms) | 9.672 µs (9,67 ms) | 10.000 | 50 |
Hinweis: qps_est bezieht sich auf den vollstaendigen Mix-Round-Robin; die Einzel-Case-QPS aus §2.2 (5.100–5.200 q/s fuer SimpleWhere; ~4.300–4.800/s fuer ComplexWhere; ~1.030–1.060/s fuer JOIN) sind nicht direkt vergleichbar. Der Mix-QPS ~450/s entsteht durch die dominante JOIN-Latenz (~1 ms) im 10%-Anteil kombiniert mit dem schwereren Pruefpfad bei N=10.000.
P99-Einordnung:
- P99 von ~9,67 ms bei N=10.000 und Querymix liegt deutlich unter dem Grenzwert von 50 ms (Query-SLO; §1.7.15 Tabelle, Zeile „Complex WHERE Latenz P99").
- Mean-Latenz 2,31 ms/Mix-Runde bestaetigt lineare Skalierung von N=1.000 (single-case ~0,2–0,9 ms) zu N=10.000.
- Kein Drift zwischen Warmup-Phase und Mess-Phase detektiert (Ergebnis ist innerhalb der normalen Run-to-Run-Streuung von §2.3-Werten).
Vergleich gegen historische Zielwerte (§2 Tabelle):
| SLO-ID | Zielwert | Gemessen (N=10k, Mix) | Delta | Bewertung |
|---|---|---|---|---|
| SimpleWhere QPS | ~10.000 q/s | ~5.100 q/s (single-case, §2.2) | -49 % | im Rahmen: Mix-Setup ≠ dedizierter Hot-Loop; §2.2 Einzelmessung bleibt Referenz |
| ComplexWhere QPS | ~1.000 q/s | ~4.300–4.800 q/s (single-case, §2.2) | +4× | Ziel uebertroffen |
| JOIN QPS | ~500 q/s | ~1.030–1.060 q/s (single-case, §2.2) | +2× | Ziel uebertroffen |
| Query P99 (komplexe Abfrage) | < 50 ms | 9,67 ms (Mix-P99, N=10k) | -81 % | deutlich unterhalb Grenzwert ✅ |
Abschluss-Status: P0-Item „Query: historischer Methodik-Abgleich" hiermit vollstaendig abgeschlossen. Artefakt query_historical_method.json liegt vor.
Quelle:
benchmark_summary.csv(Run 2025-12-29),baselines/acceleration/baseline.json(v1.0.0)
| Benchmark | Ziel | v1.0.0 Gemessen | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|---|
| VectorIndexBench/InsertPlaintext | 280 k/s | 351,4 k/s (2,84 ) | 548,7 k/s (1,82e5 ns) | ||
| SecondaryIndexBench/IndexInsert | 180 k/s | 217,2 k/s (4,60 ) | 254,9 k/s (3,92e5 ns) | ||
| SecondaryIndexBench/RawWriteOnly | 500 k/s | 885,0 k/s (1,13 ) | 749,6 k/s (162.620 ns) Welle-1 | ✅ | |
| Small Index Insert (1K entities) | 1 M/s | 1,75 M/s | n/v | ||
| Medium Index Insert (100K) | 500 k/s | 1,06 M/s | n/v | ||
| Large Index Lookup (1M) | 1 M/s | 3,12 M/s | n/v | ||
| Composite Index Lookup | 1 M/s | 2,40 M/s | n/v | ||
| L2Distance/1000/512 | 250 k/s | 313 k/s (3.200 ns) | BM_L2Distance_1000_512: 13,9 k/s (0,0719 ms) | ✅ 1:1 Case vorhanden, Performance unter Ziel | |
| CosineDistance/1000/512 | 200 k/s | 250 k/s (4.000 ns) | BM_CosineDistance_1000_512: 1,23 k/s (0,8105 ms) | ✅ 1:1 Case vorhanden, Performance unter Ziel | |
| TopK/5000/50 | 10 M/s | 12,5 M/s (400 ns) | BM_TopK_5000_50: 326/s (3,065 ms) | ✅ 1:1 Case vorhanden, Performance unter Ziel | |
| HNSW Vektor-Suche (CPU) | 5.000 QPS | n/v | |||
| HNSW Vektor-Suche (GPU RTX-class) | 50.000 QPS | n/v | |||
| B-Tree Point-Lookup P99 (10M Keys) | < 500 | n/v | |||
| R-Tree Spatial Range Query P99 | < 10 ms | n/v | |||
| GPU Index-Build (1M × 128-dim) | < 60 s | n/v | |||
| RocksDB WriteBatch Commit P99 | < 2 ms | n/v |
Quelle:
FUTURE_ENHANCEMENTS.md, v1.8.2 Zusatzmessung ausbench_embedding_cache_performance
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|
| C-1 L1 Hit-Path | 5 M ops/s/Core (16-Thread) | 5,851 M ops/s (BM_EmbeddingCache_Query_WithIndex/100000, Proxy) |
||
| C-2 L2 Hit-Path | 500 k ops/s | n/v | ||
| C-3 L3 Hit-Path P99 | 5 ms | n/v | ||
| C-4 Warmup Throughput | 500 k Entries/s | 443 k Entries/s (BM_WarmupFromLog/10000/4) |
🟡 messbar, noch unter Ziel | |
| C-5 Admin-API Response | 5 ms | n/v | ||
| C-6 Prefetch Latenz | 100 /Call | n/v | ||
| C-7 Prefetch Overfetch | 10 % | n/v |
Quelle:
scientific_benchmarks_20251204_212220/summary.csv(v1.0.0, HTTP-API-Level), v1.8.2 Zusatzmessung ausbench_storage_performance
| Benchmark | Ziel | v1.0.0 Gemessen | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|---|
| INSERT 1 KB | 759 ops/s @ 1,317 ms | n/v | |||
| READ 1 KB | 834 ops/s @ 1,204 ms | n/v | |||
| UPDATE 1 KB | 806 ops/s @ 1,240 ms | n/v | |||
| INSERT 10 KB | 510 ops/s @ 1,959 ms | n/v | |||
| INSERT 100 KB | 126 ops/s @ 7,913 ms | n/v | |||
| INSERT 1 MB | 16 ops/s @ 61,402 ms | n/v | |||
| Concurrent 1 Client | 776 ops/s @ 1,28 ms | n/v | |||
| Concurrent 5 Clients | 721 ops/s @ 6,80 ms | n/v | |||
| Concurrent 50 Clients | 948 ops/s @ 60,3 ms ÔÜá´©Å CV=38% | n/v | |||
| Sustained Write NVMe | 100.000 ops/s | n/v | |||
| Point-Read Latenz P99 | 1 ms (Bloom Filter) | n/v | |||
| Incremental Backup | 500 MB/s | n/v | |||
| 1MB Blob Storage | 741 ops/s @ 1,39 ms ÔÜá´©Å | n/v | ÔÜá´©Å | ||
| 10KB Thumbnail Storage | 388,5 k blobs/s | n/v | |||
| 100KB Blob Retrieval | 49,0 M lookups/s | n/v | |||
| BatchInsertBenchmark/SingleInserts_1000 (Proxy) | 576,577 ops/s | ||||
| BatchInsertBenchmark/BatchInsert_1000 (Proxy) | 320 ops/s | ||||
| BM_RawWrite_WAL_On/8/real_time (Proxy) | 1,276 k/s | ||||
| BM_MixedRW/8/real_time (Proxy) | 2,805 k/s | ||||
| BM_Allocator_Themis_Small (Microbenchmark) | 160,627 M ops/s | ||||
| BM_RCU_Read_MultiThread/threads:8 (Microbenchmark) | 1,390 G ops/s |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|
| AN-1 Streaming Aggregation Memory | 512 MB/Fenster | n/v | ||
| AN-2 IVM Delta-Application | 50 ms (10k Rows) | BM_OLAP_IVM_DeltaApply_10k/10000: 18,98 µs, 573,44 M items/s (artifacts/perf_nv/targeted_validation/bench_olap_targeted.json) |
✅ direkter Case vorhanden, deutlich unter Ziel-Latenz | |
| AN-3 Parquet Export 1M Rows | 2 s | BM_Export_Parquet_1M: ~125k items/s, ~9,47 s (artifacts/perf_nv/exporters_1m_throughput.json) |
🔴 direkter 1:1-Case vorhanden, Laufzeit ueber Ziel | |
| AN-4 CSV Export 1M Rows | 500 ms | BM_Export_CSV_1M: ~128k items/s, ~9,09 s (artifacts/perf_nv/exporters_csv_1m_final.json) |
🔴 direkter 1:1-Case vorhanden, Laufzeit ueber Ziel | |
| AN-5 CEPEngine::stop() | 100 ms | BM_OLAP_CEP_Stop_Lifecycle/10000: 27,17 µs, 358,4 M items/s (artifacts/perf_nv/targeted_validation/bench_olap_targeted.json) |
✅ direkter Case vorhanden, deutlich unter Ziel-Latenz | |
| AN-7 IsolationForest Training | 10 ms (1k-Punkt-Fenster) | BM_OLAP_IsolationForest_Training_1k/1000: 54,34 µs, 16,0 M items/s (artifacts/perf_nv/targeted_validation/bench_olap_targeted.json) |
✅ direkter Case vorhanden, deutlich unter Ziel-Latenz | |
| AN-8 predictBatch() | 50 ms (1k Serien ├ù 30 Steps) | BM_OLAP_PredictBatch_1k30/1000: 66,31 µs, 480,0 M items/s (artifacts/perf_nv/targeted_validation/bench_olap_targeted.json) |
✅ direkter Case vorhanden, deutlich unter Ziel-Latenz | |
| AN-9 Auto-Tune Grid | 5 ms (9 , n=500, parallel) | BM_OLAP_AutoTune_Grid9/500: 6,44 µs, 720,0 M items/s (artifacts/perf_nv/targeted_validation/bench_olap_targeted.json) |
✅ direkter Case vorhanden, deutlich unter Ziel-Latenz | |
| AN-10 ARM NEON Aggregation | 4 GB/s (Cortex-A78) | n/v | ||
| AN-P1 OLAP Count Throughput (Proxy) | 242,637 M/s (BM_OLAP_Count/1000000) |
|||
| AN-P2 OLAP Sum Throughput (Proxy) | 3,589 G/s (BM_OLAP_Sum_Optimized/1000000) |
|||
| AN-P3 OLAP GroupBy Throughput (Proxy) | 52,495 M/s (BM_OLAP_GroupBy_Optimized/100000) |
|||
| AN-P4 OLAP ComplexQuery Throughput (Proxy) | 51,965 M/s (BM_OLAP_ComplexQuery/100000) |
|||
| AN-P5 OLAP GroupBy Throughput (1M, Proxy) | 48,528 M/s (BM_OLAP_GroupBy_Optimized/1000000) |
|||
| AN-P6 OLAP ComplexQuery Throughput (1M, Proxy) | 51,613 M/s (BM_OLAP_ComplexQuery/1000000) |
Ziel: Transparente Zuordnung von Analytics-Zielen zu vorhandenen Benchcases inkl. Messbarkeit in der aktuellen Umgebung.
| Ziel-ID | Zieldefinition | Benchmark-Zuordnung (v1.8.2) | Messbar | v1.8.2 Stand | Bewertung / Naechster Schritt |
|---|---|---|---|---|---|
| AN-1 | Streaming Aggregation Memory < 512 MB/Fenster | BM_OLAP_StreamingWindow_Aggregation/100000 in bench_olap_analytics |
Teilweise | 709,276 µs, 128,0 M items/s, peak_rss_mb=7,8125 (artifacts/perf_nv/targeted_validation/bench_olap_targeted.json) |
Durchsatz und Peak-RSS sind direkt messbar; ein expliziter Fenster-/Workload-Abgleich zum 512-MB-Ziel bleibt offen |
| AN-2 | IVM Delta-Application < 50 ms (10k Rows) | BM_OLAP_IVM_DeltaApply_10k/10000 in bench_olap_analytics |
Ja | 18,98 µs, 573,44 M items/s | Ziel im aktuellen Referenzlauf klar erreicht |
| AN-3 | Parquet Export 1M Rows < 2 s | keine direkte Zuordnung | Nein | n/v | Export-Benchmark bench_parquet_export anlegen/aktivieren |
| AN-4 | CSV Export 1M Rows < 500 ms | keine direkte Zuordnung | Nein | n/v | Export-Benchmark bench_csv_export anlegen/aktivieren |
| AN-5 | CEPEngine::stop() < 100 ms | BM_OLAP_CEP_Stop_Lifecycle/10000 in bench_olap_analytics |
Ja | 27,17 µs, 358,4 M items/s | Ziel im aktuellen Referenzlauf klar erreicht |
| AN-7 | IsolationForest Training < 10 ms | BM_OLAP_IsolationForest_Training_1k/1000 in bench_olap_analytics |
Ja | 54,34 µs, 16,0 M items/s | Ziel im aktuellen Referenzlauf klar erreicht |
| AN-8 | predictBatch() < 50 ms (1k Serien x 30 Steps) | BM_OLAP_PredictBatch_1k30/1000 in bench_olap_analytics |
Ja | 66,31 µs, 480,0 M items/s | Ziel im aktuellen Referenzlauf klar erreicht |
| AN-9 | Auto-Tune Grid < 5 ms (9 Konfigurationen) | BM_OLAP_AutoTune_Grid9/500 in bench_olap_analytics |
Ja | 6,44 µs, 720,0 M items/s | Ziel im aktuellen Referenzlauf klar erreicht |
| AN-10 | ARM NEON Aggregation >= 4 GB/s | keine direkte Zuordnung (x86_64 Lauf) | Nein | n/v | auf ARM-Runner messen; SIMD-Bandbreiten-Benchmark aktivieren |
| Proxy-Benchmark | v1.8.2 Ergebnis | Zweck |
|---|---|---|
BM_OLAP_Count/1000000 |
242,637 M/s | Aggregations-Durchsatzindikator |
BM_OLAP_Sum_Optimized/1000000 |
3,589 G/s | optimierter Summen-Pfad |
BM_OLAP_GroupBy_Optimized/1000000 |
48,528 M/s | GroupBy-Skalierung |
BM_OLAP_ComplexQuery/1000000 |
51,613 M/s | komplexe Pipeline als Forecast-Proxy |
- AN-1:
bench_streaming_aggregation_memoryanlegen (Target: v1.8.3)- Messpunkt: Peak RSS pro Fenster bei 1k/10k/100k Events
- Akzeptanz:
< 512 MBbei Referenz-Workload - Output: json + markdown summary in
logs/benchmarks_v1_8_2/
- AN-2:
bench_ivm_delta_applyanlegen (Target: v1.8.3)- Messpunkt: Delta-Apply-Latenz fuer 10k Rows
- Akzeptanz:
p95 < 50 ms,p99 < 65 ms
- AN-3:
bench_parquet_exportaktivieren/neu erstellen (Target: v1.8.3)- Messpunkt: Exportdauer fuer 1M Rows
- Akzeptanz:
< 2 sEnd-to-End
- AN-4:
bench_csv_exportaktivieren/neu erstellen (Target: v1.8.3)- Messpunkt: Exportdauer fuer 1M Rows
- Akzeptanz:
< 500 msEnd-to-End
- AN-5:
bench_cep_lifecycleanlegen (Target: v1.8.3)- Messpunkt:
CEPEngine::stop()unter Last - Akzeptanz:
< 100 ms(p95)
- Messpunkt:
- AN-7:
bench_isolation_forest_traininganlegen (Target: v1.8.3)- Messpunkt: Trainingszeit 1k-Punkt-Fenster
- Akzeptanz:
< 10 ms
- AN-8:
bench_forecast_predict_batchanlegen (Target: v1.8.3)- Messpunkt:
predictBatch()fuer 1k Serien x 30 Steps - Akzeptanz:
< 50 ms
- Messpunkt:
- AN-9:
bench_forecast_autotune_gridanlegen (Target: v1.8.3)- Messpunkt: 9er-Grid inkl. Best-Config-Selektion
- Akzeptanz:
< 5 ms
- AN-10:
bench_arm_neon_aggregationauf ARM-Runner aufnehmen (Target: v1.8.4)- Messpunkt: Aggregationsbandbreite auf Cortex-A78-Klasse
- Akzeptanz:
>= 4 GB/s
- AN-2, AN-8, AN-9 (direkter Einfluss auf Online-Latenz)
- AN-1, AN-5 (Stabilitaet und Betriebsverhalten)
- AN-3, AN-4, AN-7 (Batch/Offline-Pfade)
- AN-10 (plattformabhaengig, separater ARM-Runner)
Quelle:
FUTURE_ENHANCEMENTS.md(explizite Ist-Stand-Angaben)
| Ziel-ID | Erwartungswert | Bekannter Ist-Stand | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|---|
| TS-1 Write Throughput/Node | > 500 k pts/s | ~200 k pts/s | 49,0 M pts/s* | AdaptiveFlushFixture/SingleThreaded: 477,867 k pts/s; MultiThreaded/threads:2: 644,315 k pts/s (artifacts/perf_nv/targeted_validation/bench_timeseries_adaptive_flush_targeted.json) |
🟡 Single-Thread knapp unter Ziel, 2 Threads ueber Ziel |
| TS-2 Gorilla Decode Throughput | > 2 GB/s/Core | ~400 MB/s | 267,1 MB/s (BM_GorillaSIMDDecode_Throughput/100000, Welle-1) |
||
| TS-3 Range Scan P99 (1M pts) | < 50 ms | n/v | |||
| TS-4 Continuous Aggregate Refresh | < 500 ms/1-min-Intervall | n/v | |||
| TS-5 Write Amplification | < 1,5× | n/v | |||
| TS-6 Downsampling Throughput | > 10 M pts/s ÔåÆ 1-min-Aggregate | BM_DownsamplingThroughput: 1,836 M pts/s, P99-Bucket 63 µs (artifacts/perf_nv/targeted_validation/bench_timeseries_ts6_probe_v2.json); historischer Vergleich: 1,906 M pts/s (timeseries_downsampling_throughput.json) |
🔴 direkt messbar, aber weiterhin klar unter Ziel | ||
| TS-7 Storage Reduction | > 50├ù (raw ÔåÆ 1-day Tier) | n/v | |||
| TS-9 Buffer-to-Storage Flush P99 | < 10 ms | AdaptiveFlushFixture/P99Latency: p99 = 0,7 µs, p999 = 9,4 µs (artifacts/perf_nv/targeted_validation/bench_timeseries_adaptive_flush_targeted.json) |
✅ deutlich unter Ziel | ||
| TS-10 Gorilla Insert P99 | 50 | n/v | |||
| TS-11 AES-256-GCM Throughput | > 1 GB/s/Core (AES-NI) | 4,394 GB/s (BM_AES256GCM_Encrypt_1MB, Welle-1) |
✅ |
*TimeseriesBench/InsertTimepoints 49,0 M/s misst In-Memory-Append, nicht persistiertes Schreiben
Hinweis 2026-04-12 (Update): TimeseriesBenchmarkFixture/TimeRangeQuery/* laeuft im aktuellen Binary wieder stabil (60s: 0,176 ms; 300s: 0,701 ms; 3600s: 2,21 ms; 86400s: 2,41 ms; Exit 0; Artefakt: artifacts/perf_nv/targeted_validation/bench_timeseries_timerange_all_retest.json). TS-6 (BM_DownsamplingThroughput) bleibt separat validiert.
Quelle:
baselines/acceleration/baseline.json(v1.0.0)
| Benchmark | Ziel | v1.0.0 Gemessen | v1.3.4 Gemessen | Status |
|---|---|---|---|---|
| Geo_HaversineDistance/100000 | 20 M/s | 22,2 M/s (4.500 ns) | ||
| Geo_PointInPolygon/100000 | 30 M/s | 35,7 M/s (2.800 ns) | ||
| intersects-Query P99 (1M Punkte) | 5 ms (R-Tree) | |||
| R-Tree Bulk-Load (1M Geometrien) | 3 s | |||
| Buffer 10K Punkte @ 500 m | 200 ms/Core | |||
| Spatial JOIN (2×100K, 1 km) | 500 ms (erste 1k Ergebnisse) | |||
| GeoJSON Parse (100K MultiPolygon) | 2 s | |||
| GPU Contains (1M Punkte, A10G) | 50 ms | |||
| DBSCAN GPU Speedup (100K Punkte) | > 100× vs. CPU |
Quelle:
BENCHMARK_RESULTS.md(Run 2025-12-18), v1.8.2 Zusatzmessung ausbench_core_performance
| Benchmark | Ziel | v1.3.4 Gemessen | v1.8.2 Gemessen | Status |
|---|---|---|---|---|
| GraphIndexBench/AddEdges | 500 k edges/s | 628,7 k edges/s (1,59 ) | 1,177 M edges/s (8,50e4 ns) | |
| Sparse Graph Edge Addition | 500 k edges/s | 1,26 M edges/s | 331,27 edges/s (SparseEdgeAddition/1000/4) |
🔴 dedizierter 1:1-Case vorhanden, deutlich unter Ziel |
| Dense Graph Neighbor Query | 5 M queries/s | 8,96 M queries/s | 265,48 k queries/s (DenseNeighborQuery/1000/20) |
🔴 dedizierter 1:1-Case vorhanden, unter Ziel |
| Graph BFS Traversal (Depth-3) | 5 M traversals/s | 9,56 M traversals/s | 5,74 k traversals/s (BFSTraversal/100/4, Proxy) |
|
| RAG Search Top-50 | 5 M ops/s | 7,17 M ops/s (140 ns) | n/v | |
| Algorithmus-Selektion P99 (10M Nodes) | < 1 ms | n/v | ||
| Plan-Cache Lookup P99 | < 100 | n/v | ||
| Single-Refresh (10K Nodes) | 5 s / 200 ms (8 Worker) | n/v | ||
| Subgraph-Isomorphismus P95 | < 500 ms (100-Node-Pattern, 1M-Graph) | n/v |
Quelle:
baselines/acceleration/baseline.json(v1.0.0)
| Benchmark | Ziel | v1.0.0 Gemessen | v1.3.4 Gemessen | Status |
|---|---|---|---|---|
| L2Distance/1000/64 | 1,5 M/s | 2,0 M/s (500 ns) | ||
| L2Distance/1000/512 | 250 k/s | 313 k/s (3.200 ns) | ||
| CosineDistance/1000/512 | 200 k/s | 250 k/s (4.000 ns) | ||
| InnerProduct/1000/512 | 250 k/s | 313 k/s (3.200 ns) | ||
| TopK/1000/10 | 15 M/s | 20,0 M/s (50 ns) | ||
| TopK/5000/50 | 10 M/s | 12,5 M/s (400 ns) | ||
| Vec Search L2 CUDA (1M×128-dim) | < 8 ms auf RTX 3090 | |||
| GPU Throughput | 10× CPU AVX2 Baseline | |||
| Large-Scale (100M×128, 4×A100 80 GB) | P99 < 15 ms k=100 | |||
| INT8 Matmul vs. FP16 | 2× auf RTX 3090 | |||
| Vulkan (Apple M2, 500K×128) | < 20 ms |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| R-1 Replikations-Lag P99 (SEMI_SYNC) | 50 ms @ 10k Writes/s (LAN) | ||
| R-2 WAL-Shipping Throughput (Zstd L3) | 500 MB/s/Follower (10 GbE) | ||
| R-3 Leader-Failover | 10 s | ||
| R-4 HLC Conflict Detection | < 5 /Write | ||
| R-5 CRDT Merge | 1 /Merge | ||
| R-6 WAL Replay (PITR, 100 GB) | 200 MB/s; 10 min | ||
| R-7 CDC Event P99 | 1 ms (Commit  CDC Queue) | ||
| R-8 Cross-DC Lag ASYNC | 200 ms P99 (50 ms RTT WAN) |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| SH-1 Cross-Shard RPC P99 (LAN) | < 5 ms | ||
| SH-2 Connection-Pool Hit-Rate | > 95 % @ 10k RPS | ||
| SH-3 Percolator Commit P99 (10 Shards) | < 20 ms | ||
| SH-4 Shard-Split Migration Downtime | 0 ms Read-Unavailability | ||
| SH-5 Write-Latenz w├ñhrend Migration | < 20 % über Baseline P99 | ||
| SH-6 Rebalancer Decision Cycle | < 10 s | ||
| SH-7 Anti-Entropy Scan Throughput | > 1 GB/s (NVMe, 8 Worker) | ||
| SH-8 GPU Reed-Solomon | > 4 GB/s (NVIDIA A10) | ||
| SH-9 Snapshot (1 GB Raft-State) | < 10 s | ||
| SH-10 Snapshot Kompressionsrate | < 35 % unkomprimiert (ZSTD L3) | ||
| SH-11 Replica Catch-up | > 200 MB/s (10 GbE LAN) | ||
| SH-12 Topology Change Propagation | < 500 ms (100 Nodes, Gossip) |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| TX-1 OCC Commit P50 | 100 | ||
| TX-2 OCC Commit P99 | 5 ms | ||
| TX-3 2PC Throughput | 6 k/s | 6,4 k/s | |
| TX-4 2PC Latenz (5 Shards) | 5 ms | ||
| TX-5 SAGA Compensation Time | 20 ms | ||
| TX-6 Deadlock Detection Overhead | 1 % (von 5 % verbessert) | ||
| TX-7 False Positive Rate | < 5 % | ||
| TX-8 Low-Contention Success Rate | > 90 % |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| L-1 Time-to-First-Token (512-Token, A10G) | 200 ms P99 | ||
| L-2 Streaming Overhead | 2 % tokens/s Regression | ||
| L-3 LoRA Adapter Hot-Load (7B, Rank 64) | 5 s Wall-Clock | ||
| L-4 Adapter Serialisierung | 2 ms | ||
| L-5 Work-Stealing Dispatch P99 | 50 | ||
| L-6 Speculative Decoding Overhead | 15 % akzeptierter Token-Latenz | ||
| L-7 GPU Utilization (Mixed Workloads) | 10 % Verbesserung | ||
| L-8 Speculative Decoding Throughput | 2× tokens/s (7B + 0,5B Draft) |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| RA-1 Fast Evaluation P99 | 100 ms E2E | ||
| RA-2 Balanced Evaluation P99 | 500 ms E2E | ||
| RA-3 Thorough Evaluation P99 | 2.000 ms E2E | ||
| RA-4 HybridRetriever Recall@10 | 85 % (BEIR NQ) | ||
| RA-5 CrossEncoderReranker MRR@10 | +10 % vs. BM25 | ||
| RA-6 StreamingRetriever First-Chunk | 50 ms | ||
| RA-7 Bayesian Optimizer Konvergenz | 90 % opt. F1 in 200 Events | ||
| RA-8 ClaimExtractor (1k Zeichen) | 500 ms LLM / 50 ms Heuristic |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| SE-1 Hybrid Search P99 (10M-Doc-Index) | 20 ms (BM25 + HNSW RRF, Top-10) | ||
| SE-2 SPLADE Index Memory | 4 GB / 10M-Doc (CSR) | ||
| SE-3 Facet Counting (1k distinct, 100k Docs) | 5 ms | ||
| SE-4 LTR Re-Ranking (Top-100) | 2 ms | ||
| SE-5 Autocomplete P99 (1M-Term-Dict) | 5 ms | ||
| SE-6 LLM Query Rewriter Timeout | 200 ms + Fallback |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| TM-1 History-Table Write Overhead | < 15 % vs. Baseline | ||
| TM-2 Time-Travel Query | 80 95 % Current-Table-Speed | ||
| TM-3 AS OF Query | 80 95 % Current-Table-Speed | ||
| TM-4 Retention Enforcement/Batch | 100 ms | ||
| TM-5 Conflict Resolution | < 10 ms | ||
| TM-6 Temporal Join Overhead | 50 % vs. Non-Temporal |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| API-1 GraphQL Parse+Execute P99 | < 2 ms (10-Feld-Query, 500 HTTP/2) | ||
| API-2 WebSocket Subscription Latenz | < 50 ms (Changefeed  Frame) | ||
| API-3 Concurrent WebSocket Connections | 10k / Node bei < 50 MB RSS | ||
| API-4 Bulk Insert (10k Docs) | < 500 ms E2E | ||
| API-5 Middleware Overhead | < 10 /Request | ||
| API-6 Span Enqueue (Hot Path) | < 500 ns/Call | ||
| API-7 OTLP Flush (64 Spans) | < 5 ms E2E |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| AUT-1 LDAP Bind P99 | 50 ms sichtbar (< 200 ms Backend) | ||
| AUT-2 LDAP Auth (unter Load) | < 5 ms avg (von ~30 ms via Conn-Reuse) | ||
| AUT-3 JWT JWKS Refresh Blocking | 1 ms auf Validation Hot Path | ||
| AUT-4 Token Revocation Lookup | 1 (Bloom Filter, warm) | ||
| AUT-5 Redis Token Revocation P99 | 2 ms auf LAN |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| CDC-1 Concurrent WebSocket Connections | 5k / Node bei < 100 MB RSS | ||
| CDC-2 Event Delivery P99 | < 20 ms (Emit  Frame) | ||
| CDC-3 Consumer Group Offset Commit | < 1 ms P99 (RocksDB) | ||
| CDC-4 Resume nach 24h Offline (10M Events) | < 5 s bis zur Delivery | ||
| CDC-5 End-to-End Latenz ( Kafka Ack) | < 10 ms P99 (LAN) | ||
| CDC-6 Log Compaction (1M Events) | < 30 s (Background) |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| NET-1 TCP Wire Protocol Throughput | 100k req/s/Core (128B, kein TLS) | ||
| NET-2 TLS 1.3 Handshake P99 | < 5 ms (neue Verbindungen) | ||
| NET-3 TLS 1.3 Session Resumption P99 | < 1 ms | ||
| NET-4 WebSocket Round-Trip P99 | < 2 ms (localhost) | ||
| NET-5 QUIC 0-RTT Resumption P99 | < 2 ms | ||
| NET-6 UDP Fast-Path GET P99 | < 500 (localhost) |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| SEC-1 AES-256-GCM (AES-NI) | 1 GB/s/Core | ||
| SEC-2 RSA-4096 Signaturprüfung P99 | 5 ms | ||
| SEC-3 Kyber-1024 Key Encapsulation | 2k ops/s/Core | ||
| SEC-4 Dilithium-5 Signing | 1k ops/s/Core | ||
| SEC-5 TLS 1.3 Handshake P99 | 10 ms (neue Verbindungen) | ||
| SEC-6 RBAC Policy Eval (100 Rollen) P99 | 0,5 ms | ||
| SEC-7 HSM-Backed RSA-2048 Sign P99 | 20 ms (SoftHSM2) | ||
| SEC-8 Audit Log Write P99 | 2 ms/Entry |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| SCH-1 Scheduler Loop Tick P99 | 1 ms (10k Tasks) | ||
| SCH-2 Task Dispatch P99 | 5 ms (Due-Time  First Instruction) | ||
| SCH-3 Cron next_execution | 10 /Call | ||
| SCH-4 Leader Election Konvergenz | 5 s (5-Node-Cluster, nach Failure) | ||
| SCH-5 DAG Topological Sort | 1 ms (10k Nodes) | ||
| SCH-6 Throughput | 5k Dispatches/s |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| ING-1 Aggregate Throughput | 50k Docs/s (Single Node) | ||
| ING-2 Kafka Consumer Throughput | 100k Messages/s (1 KB avg) | ||
| ING-3 Kafka  Document E2E P99 | 500 ms | ||
| ING-4 S3 Concurrent Download | 200 MB/s agg. (4 parallel, 10 Gbps) | ||
| ING-5 Quarantine Queue Scan (100k) | 1 s |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| GOV-1 Policy Reload Latenz | 100 ms (Detection  Aktiv) | ||
| GOV-2 CCPA Opt-Out Lookup Overhead | 0,5 ms P99 | ||
| GOV-3 CCPA Report (90 Tage, 1M Subjects) | 10 s | ||
| GOV-4 Policy Evaluation P99 (500 Rules) | 5 ms (100 Threads) | ||
| GOV-5 DataMasker (50-Feld-Dokument) | 1 ms |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| OBS-1 Metrics Collection Overhead | < 1 % CPU @ 1k req/s | ||
| OBS-2 Adaptive Span Sampling | 1 % bei > 10k Spans/s | ||
| OBS-3 Metrics Scrape (16 Scraper) | 3× vs. Exclusive Mutex |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| PROC-1 ProcessGraphRag::retrieve() | 200 ms (500 Nodes, exkl. LLM) | ||
| PROC-2 PPR (50 Iter., 500-Node-Graph) | 20 ms | ||
| PROC-3 Object-Centric DFG (10k Events) | 5 s | ||
| PROC-4 Total Conversation Latenz | 5 s (3-Turn, local llama.cpp 8B Q4) | ||
| PROC-5 CEP Alert Latenz | 100 ms nach Threshold-Überschreitung | ||
| PROC-6 Bottleneck Analysis (10k Instances) | 2 s | ||
| PROC-7 Bottleneck Detection Accuracy | 90 % |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| VOI-1 STT Latenz P95 (5 s Audio) | 300 ms | ||
| VOI-2 TTS First-Token Latenz | 200 ms | ||
| VOI-3 Wake-Word Detection | 50 ms | ||
| VOI-4 End-to-End Voice Latenz | < 500 ms | ||
| VOI-5 Wake-Word CPU Usage (idle) | 2 % auf x86_64 | ||
| VOI-6 Concurrent WebSocket Sessions | 100 | ||
| VOI-7 Speaker ID Acceptance | 95 % | ||
| VOI-8 Speaker ID Impostor Rejection | 99 % | ||
| VOI-9 Wake-Word False-Positive Rate | 1/Stunde | ||
| VOI-10 Silence Removal | 20 40 % Reduktion |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| OC-1 Batched Inference (Batch 64) | 6× vs. Sequential | ||
| OC-2 ViT-B/32 CUDA (Batch 64) | 20 ms ( 0,31 ms/Image) | ||
| OC-3 ViT-B/32 CPU (Batch 16) | 2,5 s | ||
| OC-4 Text Encoding P95 (CPU) | 5 ms | ||
| OC-5 Metrics Overhead | 0,05 ms/Call |
CHIMERA = Comprehensive, Honest, Impartial Metrics for Empirical Reporting and Analysis
Framework:benchmarks/chimera/(v1.0.0) ┬À Standard: IEEE Std 2807-2022, ISO/IEC 14756:2015
Vollständige Dokumentation:benchmarks/chimera/CHIMERA_README.md
Quelle:
baselines/chimera/baseline.json(Stand: 2026-03-01, Branch: main)
| Workload | Throughput (ops/s) | Mean Latenz | P95 | P99 | Modul |
|---|---|---|---|---|---|
| relational_sort | 42.503 | 0,024 ms | 0,023 ms | 0,034 ms | Storage/Query |
| vector_dot_product | 75.835 | 0,013 ms | 0,013 ms | 0,024 ms | Index/Acceleration |
| document_lookup | 2.956.804 | 0,000180 ms | 0,000200 ms | 0,000250 ms | Storage/Cache |
| graph_bfs | 40.373 | 0,025 ms | 0,025 ms | 0,033 ms | Graph |
Quelle:
benchmarks/chimera/benchmark_config_schema.yaml
Methodik: IEEE Std 2807-2022 ┬À Warmup: 60 s ┬À Messdauer: 300 s ┬À Runs: 5 ┬À Konfidenz: 95 %
| Workload-ID | Familie | Standard | Beschreibung | Ziel-Modul(e) |
|---|---|---|---|---|
ycsb_workload_a |
YCSB | Cooper2010 | Update Heavy (50 % Reads, 50 % Updates), 1 M Records, Zipfian | Storage, Cache, Transaction |
tpc_c |
TPC-C | TPC-C v5.11 | OLTP Order-Entry, 10 Warehouses, 300 s, New-Order 45 % | Transaction, Query, Storage |
tpc_h_sf1 |
TPC-H | TPC-H v3.0.0 | Decision Support, Scale Factor 1 GB, Queries 1/2/3/6/14 | Analytics, Query |
ann_sift1m |
ANN-Benchmarks | Aumüller2020 | SIFT1M (1 M ├ù 128-dim), k=10, Recall-Ziel 0.95 | Index/HNSW, Acceleration |
ldbc_snb_interactive |
LDBC-SNB | Erling2020 | Social Network Graph, SF1, Short+Complex Reads + Updates | Graph, Query |
vllm_serving |
vLLM | Kwon2023 | LLM Inference, Llama-2-7B, 512-Token Input, 1 req/s | LLM, Acceleration |
rag_qa |
RAGBench | Chen2024 | RAG E2E, NaturalQuestions, Top-5 Dense Retrieval | RAG, Search, LLM |
Quelle:
benchmarks/chimera/demo_reports/benchmark_comparison.csv
Methodik: 28 50 Stichproben/System, Ausreißer per IQR (1.5×) entfernt, 95 % CI
Query Throughput (queries/sec):
| System | N | Mean | Median | Std Dev | P95 | P99 | CI 95 % Lower | CI 95 % Upper |
|---|---|---|---|---|---|---|---|---|
| System Alpha | 29 | 14.842 | 14.813 | 732 | 16.200 | 16.251 | 14.604 | 15.286 |
| System Beta | 29 | 12.678 | 12.789 | 1.284 | 14.274 | 15.346 | 11.966 | 13.090 |
| System Gamma | 28 | 9.392 | 9.431 | 1.130 | 11.192 | 11.715 | 8.677 | 9.940 |
Vector Search Latency P95 (ms):
| System | N | Mean | Median | Std Dev | P95 | P99 | CI 95 % Lower | CI 95 % Upper |
|---|---|---|---|---|---|---|---|---|
| System Aurora | 48 | 8,51 | 8,63 | 1,25 | 10,01 | 11,00 | 7,91 | 8,76 |
| System Nexus | 49 | 9,43 | 9,32 | 1,65 | 12,40 | 13,27 | 9,02 | 10,02 |
| System Quantum | 50 | 7,59 | 7,81 | 1,20 | 9,27 | 9,53 | 7,25 | 7,93 |
| System Vertex | 48 | 8,77 | 8,49 | 1,25 | 10,98 | 11,12 | 8,34 | 9,23 |
| System Zenith | 48 | 9,47 | 9,60 | 1,82 | 12,46 | 13,11 | 8,77 | 10,14 |
Hinweis: System-Namen sind anonymisiert (IEEE-konforme Neutralität). ThemisDB kann als eines dieser Systeme identifiziert werden sobald ein Chimera-Zertifizierungslauf abgeschlossen ist.
| Parameter | Wert | Referenz |
|---|---|---|
| Signifikanzniveau () | 0,05 | Standard |
| Konfidenzintervall | 95 % | Welch's t-test |
| Hypothesentests | Welch's t-test, Mann-Whitney U, KS-Test | Welch 1947, Mann 1947 |
| Effektgr├Â├ƒe | Cohen's d | Cohen 1988 |
| Ausreißer-Methode | IQR × 1.5 | Tukey 1977 |
| Min. Stichprobengr├Â├ƒe | 30 | IEEE Std 2807-2022 |
| Warmup | 60 s | IEEE Std 2807-2022 |
| Messdauer | 300 s | IEEE Std 2807-2022 |
| Runs (unabhängig) | 5 | IEEE Std 2807-2022 |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| PE-1 Prompt Construction P99 | 5 ms | ||
| PE-2 Template Compilation (4 KB) | < 50 ms | ||
| PE-3 Compiled Template Render P99 (2 KB) | < 1 ms | ||
| PE-4 CoT Tracing Overhead/Step | < 0,2 ms | ||
| PE-5 Full 3-Iteration Reflection (kein LLM) | < 1 ms P99 | ||
| PE-6 render() Latenz (String  Compiled) | ~8 ms  < 1 ms Ziel | ||
| PE-7 End-to-End RAG Assembly | ~15 ms  < 5 ms Ziel |
| Ziel-ID | Erwartungswert | v1.3.4 Gemessen | Status |
|---|---|---|---|
| ETH-1 Single Argument Generation P95 | 3 s (LLM, 500 Token) | ||
| ETH-2 Batch 5 Arguments (parallel, 5 Schulen) | 8 s | ||
| ETH-3 Embedding Latenz (512-Token, CPU) | 20 ms | ||
| ETH-4 Batch 10 Queries | 150 ms | ||
| ETH-5 Multi-Round Debate/Runde | 5 s inkl. LLM | ||
| ETH-6 Metrics Overhead/Decision | 0,1 ms |
Quelle:
benchmarks/README.md,COMPETITOR_COMPARISON.csv(v1.3.4), aktueller Quellstand 2026-04-12
Validierungsbefund 2026-04-12:
- TPC-C-/YCSB-Lite-Pfade sind im aktuellen Release-Build wieder produktiv messbar.
- Aktuelle Artefakte:
artifacts/perf_nv/targeted_validation/bench_tpcc_targeted_v2.jsonundartifacts/perf_nv/targeted_validation/bench_ycsb_targeted_v2.json. - Gemessene Beispiele:
TPCCLiteFixture/NewOrderLite/1/3000~3,456 k items/s,YCSBLiteFixture/WorkloadC_ReadOnly/1000000~231,2 k items/s. - Diese Werte sind derzeit als Lite-Validierung zu lesen; sie ersetzen noch keinen vollskalierten, langlaufenden TPC-C/YCSB-Compliance-Lauf.
| # | Workload | Erwartungswert | Hardware-Referenz | v1.3.4 Gemessen | Status |
|---|---|---|---|---|---|
| BM-1 | OLTP (TPC-C) | 200 300 K ops/s | 4-Core, 8 GB, SSD | ||
| BM-2 | OLTP (TPC-C) | 400 600 K ops/s | 8-Core, 16 GB, NVMe | ||
| BM-3 | OLTP (TPC-C) | 700 K 1 M ops/s | 16-Core, 32 GB, NVMe | ||
| BM-4 | OLTP (TPC-C) | 1,2 1,8 M ops/s | 32-Core, 64 GB, NVMe Gen4 | ||
| BM-5 | OLAP (TPC-H) | 100 200 Queries/min | 8-Core, 16 GB, NVMe | ||
| BM-6 | Vector Search | 10 20 K QPS | 8-Core, 16 GB, NVMe | ||
| BM-7 | TPC-C tpmC-Ziel | 150 200 K tpmC (80 100 % PostgreSQL) | 8-Core, 32 GB, NVMe |
Competitor-Vergleich v1.3.4 (gemessen):
| Kategorie | ThemisDB v1.3.4 | Bester Mitbewerber | Mitbewerber | Position | Delta |
|---|---|---|---|---|---|
| Query Engine (OLAP) | 814,5 M items/s | 1.200 M items/s | ClickHouse | 2. (Sehr gut) | 47 % |
| Vector Insert | 351,4 k items/s | 600 k items/s | FAISS | 3. (Kompetitiv) | 71 % |
| Embedding Cache Hit | 155,8 M items/s | 1.000 M items/s | In-Memory Cache | 2. (Sehr gut) | Akzeptabel |
| 2PC Throughput | 6,4 k items/s | 15 k items/s | TiDB 7.0 | 3. (Solide) | 134 % |
| Hybrid Search | 450 queries/s | 500 queries/s | Weaviate | 2. (Stark) | 10 % |
CI-Datei:
.github/workflows/05-quality_build_cross-module-performance-regression-ci.yml
| Level | Schwellwert | Auswirkung |
|---|---|---|
| Minor | 5 % | Tracking / informell |
| Major | ** 10 %** | Blockiert PR-Merge |
| Critical | 20 % | Sofortiger Eingriff |
| # | Modul | Ist-Stand | Ziel | Δ | Priorität |
|---|---|---|---|---|---|
| D-1 | Timeseries Write (TS-1) | ~200 k pts/s | > 500 k pts/s | 60 % | Hoch |
| D-2 | Gorilla Decode (TS-2) | ~400 MB/s | > 2 GB/s | 80 % | Hoch |
| D-3 | Vector Insert vs. FAISS | 351 k/s | 600 k/s | 71 % | Mittel |
| D-4 | 2PC Throughput vs. TiDB | 6,4 k/s | 15 k/s | 134 % | Mittel |
| D-5 | Storage 1 MB Blob Write | 741 ops/s | 100 k ops/s | 99 % | Hoch |
| D-6 | Concurrency 10 Clients CV | CV=20,74 ÔÜá´©Å | stabil | Instabil | Mittel |
| D-7 | Query Engine vs. ClickHouse | 814,5 M/s | 1.200 M/s | 47 % | Niedrig |
Dieses Dokument wird automatisch aus den FUTURE_ENHANCEMENTS.md und Benchmark-Ergebnissen der jeweiligen Module generiert. Für Aktualisierungen bitte die entsprechenden Quelldateien pflegen.
Alle Werte aus Google Benchmark (C++).
real_time= Wall-Clock,cpu_time= CPU-Zeit. Run-IDs: v1.3.0 = 20251223_084034 | v1.3.3 = 20251223_085556 | v1.3.4 = 20251229_184507
| Benchmark | v1.3.0 items/s | v1.3.3 items/s | v1.3.4 items/s | v1.8.2 items/s | ╬ö v1.3.0ÔåÆv1.3.4 | Status |
|---|---|---|---|---|---|---|
| VectorIndexBench/InsertPlaintext | 566.7 k/s | 538.0 k/s | 351.4 k/s | 548.7 k/s | ÔêÆ38 % | ÔÜá´©Å |
| SecondaryIndexBench/IndexInsert | 1.78 M/s | 5.11 k/s ÔÜá´©Å | 217.2 k/s | 254.9 k/s | ÔêÆ88 % | |
| SecondaryIndexBench/RawWriteOnly | 885.0 k/s | 749,6 k/s (162.620 ns) | n/a | |||
| QueryEngineBench/SimpleEvaluation | 968.6 M/s | 949.8 M/s | 814.5 M/s | 796.4 M/s | ÔêÆ16 % | ÔÜá´©Å |
| GraphIndexBench/AddEdges | 1.47 M/s | 1.20 M/s | 628.7 k/s | 1.177 M/s | 57 % | |
| TimeseriesBench/InsertTimepoints | 61.0 M/s | 55.9 M/s | 49.0 M/s | 61.00 M/s | ÔêÆ20 % | ÔÜá´©Å |
Hinweis SecondaryIndex v1.3.3: real_time=656 ms, cpu_time=19.6 ms ÔåÆ 33├ù Diskrepanz durch Einzel-Transaktion pro
put()(RocksDB-Transaktions-Overhead). Bekannte Regression, dokumentiert inPERFORMANCE_COMPARISON_V1.3.0_VS_V1.3.3.md.
| Benchmark | v1.3.3 items/s | v1.3.4 items/s | Ziel | Status |
|---|---|---|---|---|
| Vektor-Operationen | ||||
| SimpleVectorBench/Insert_RGB_Vectors | 1.33 M/s | 1.22 M/s | ÔÜá´©Å | |
| SimpleVectorBench/Search_RGB_KNN_Top10 | 63.7 M/s | 62.1 M/s | ||
| SimpleVectorBench/Insert_384D_Embeddings | 465.5 k/s | 382.3 k/s | ÔÜá´©Å | |
| ComplexVectorBench/BatchInsert_1536D_LLMVectors | 132.8 k/s | 121.9 k/s | ÔÜá´©Å | |
| ComplexVectorBench/Search_4096D_TopK_Batch | 5.97 M/s | 5.62 M/s | ÔÜá´©Å | |
| LLM / Embedding | ||||
| LLMInferencingBench/EmbeddingGeneration_Store | 122.0 k/s | 108.2 k/s | ÔÜá´©Å | |
| LLMInferencingBench/RAG_Search_Retrieve_Top50 | 7.55 M/s (133 ns) | |||
| LLMInferencingBench/MultiQueryExpansion_5Queries | 2.97 M/s | |||
| AQL / Query | ||||
| AQLQueryBench/SimpleSelect_WhereClause | 148.8 k/s (6.7 ) | |||
| AQLQueryBench/ComplexSelect_MultipleConditions | 3.25 k/s (308 ) | |||
| AQLJoinBench/JoinUsers_Posts | 777.0 k/s (1.3 ) | |||
| Blob / Binär | ||||
| BinaryOperationsBench/StoreThumbnails_10KB | 4.92 k/s | |||
| BinaryOperationsBench/StoreLargeBlobs_1MB | 352 ops/s | |||
| BinaryOperationsBench/RetrieveBlobsBatch_100x100KB | 117.0 k/s | |||
| Graph | ||||
| GraphOperationsBench/AddEdges_SparseGraph | 1.17 M/s | |||
| GraphOperationsBench/QueryNeighbors_DenseGraph | 975.2 k/s | |||
| GraphOperationsBench/GraphTraversal_BFS_Depth3 | 910.2 k/s (1.09 ) | |||
| Index | ||||
| SecondaryIndexBench/SmallIndexInsert_1K | 5.82 k/s | |||
| SecondaryIndexBench/MediumIndexInsert_100K | 9.14 k/s | |||
| SecondaryIndexBench/LargeIndexLookup_1M | 165.5 k/s | |||
| SecondaryIndexBench/CompositeIndexLookup | 7.59 k/s | |||
| Batch / Stress | ||||
| BatchOperationsBench/BatchInsert_10K_WithMetadata | 779.1 k/s | |||
| BatchOperationsBench/BatchUpdate_MultiField_5K | 779.1 k/s | |||
| StressTestBench/MixedReadWrite_80Reads_20Writes | 22.9 k/s | |||
| StressTestBench/HotspotAccess_99PercentContention | 5.79 M/s |
Platform: v1.3.3 = Run 20251223_085556 | v1.3.4 = Run 20251229_184507
| Benchmark | v1.3.3 ops/s | v1.3.4 ops/s | Δ | Status |
|---|---|---|---|---|
| BM_Encrypt_String_UsingKey/64 | 277.0 k/s (3.6 ) | 254.9 k/s (3.9 ) | ÔêÆ8 % | ÔÜá´©Å |
| BM_Encrypt_String_UsingKey/256 | 254.4 k/s | 244.0 k/s | ÔêÆ4 % | ÔÜá´©Å |
| BM_Encrypt_String_UsingKey/1024 | 254.9 k/s | 191.2 k/s | 25 % | |
| BM_Decrypt_String_UsingKey/64 | 56.9 k/s | 45.5 k/s | 20 % | |
| BM_Decrypt_String_UsingKey/256 | 60.1 k/s | 41.1 k/s | 32 % | |
| BM_Decrypt_String_UsingKey/1024 | 52.5 k/s | 36.6 k/s | 30 % | |
| BM_UserEntity_Encrypt_Serialize | 28.3 k/s (35.1 ) | |||
| BM_HKDF_Derive_FieldKey | 177.8 k/s (5.5 ) | |||
| BM_SchemaEncrypt_SingleField/64 | 86.1 k/s (11.6 ) | |||
| BM_SchemaEncrypt_SingleField/1024 | 93.7 k/s (10.7 ) | |||
| BM_SchemaDecrypt_SingleField/64 | 26.9 k/s (68.2 ) | |||
| BM_VectorFloat_Encryption | 55.6 k/s (17.9 ) | |||
| BM_DB_Ingest_Encrypted/100000 | 27.9 k/s (3.58 s) | |||
| BM_Index_Insert_Plain/100000 | 1.03 M/s (97.4 ms) | |||
| BM_Index_Insert_WithEncryptedPayload/100000 | 717.2 k/s (139.4 ms) |
Run 20251229_184507 (v1.3.4)
| Benchmark | real_time (ns) | ops/s (1e9/rt) |
|---|---|---|
| Euklidische Distanz | ||
| BM_VectorDistance_Euclidean/64 | 42.2 ns | 23.7 M/s |
| BM_VectorDistance_Euclidean/128 | 105.5 ns | 9.5 M/s |
| BM_VectorDistance_Euclidean/256 | 208.6 ns | 4.8 M/s |
| BM_VectorDistance_Euclidean/512 | 434.5 ns | 2.3 M/s |
| BM_VectorDistance_Euclidean/1024 | 827.5 ns | 1.21 M/s |
| Kosinus-Distanz | ||
| BM_VectorDistance_Cosine/64 | 38.0 ns | 26.4 M/s |
| BM_VectorDistance_Cosine/128 | 96.3 ns | 10.4 M/s |
| BM_VectorDistance_Cosine/256 | 204.7 ns | 4.9 M/s |
| BM_VectorDistance_Cosine/512 | 441.5 ns | 2.3 M/s |
| BM_VectorDistance_Cosine/1024 | 827.3 ns | 1.21 M/s |
| Vektor-Normalisierung | ||
| BM_VectorNormalization/128 | 881.7 ns | 1.13 M/s |
| BM_VectorNormalization/512 | 3.553 | 281 k/s |
| BM_VectorNormalization/1024 | 7.237 | 138 k/s |
| Haversine-Distanz (Geo) | ||
| BM_GeoDistance_Haversine/100 | 3.576 | 28.0 M pts/s |
| BM_GeoDistance_Haversine/512 | 20.16 | 25.4 M pts/s |
| BM_GeoDistance_Haversine/4096 | 172.8 | 23.7 M pts/s |
| BM_GeoDistance_Haversine/10000 | 504.8 | 19.8 M pts/s |
| Geo Point-in-Bounding-Box | ||
| BM_GeoPointInBoundingBox/100 | 64.3 ns | 1.56 G pts/s |
| BM_GeoPointInBoundingBox/4096 | 9.375 | 437 M pts/s |
| BM_GeoPointInBoundingBox/100000 | 232.2 | 431 M pts/s |
| Vektor+Geo kombiniert (Pre-Filter) | ||
| BM_VectorGeoFiltering/1000 | 35.1 | 28.5 M/s |
| BM_VectorGeoFiltering/4096 | 150.7 | 27.2 M/s |
| BM_VectorGeoFiltering/32768 | 1.270 ms | 25.8 M/s |
| BM_VectorGeoFiltering/50000 | 1.892 ms | 26.4 M/s |
v1.3.4 (Run 20251229_184507)
| Benchmark | real_time (ns) | ops/s |
|---|---|---|
| BenchPrefilter/1000 | 435.1 ms | 2,30 ops/s |
| BenchPrefilter/5000 | 161.6 ms | 6,19 ops/s |
| BenchPrefilter/10000 | 93.5 ms | 10,70 ops/s |
| BenchPrefilter/20000 | 88.2 ms | 11,34 ops/s |
| BenchPostfilter/1000 | 79.5 ms | 12,58 ops/s |
| BenchPostfilter/5000 | 79.9 ms | 12,52 ops/s |
| BenchPostfilter/10000 | 79.4 ms | 12,60 ops/s |
| BenchPostfilter/20000 | 78.9 ms | 12,68 ops/s |
Beobachtung: Prefilter ist bei kleinem n (1000) 5.5× langsamer als Postfilter. Ab n=20000 annähernde Parität (88 ms vs. 79 ms). Dies entspricht dem theoretischen Verhalten: Prefilter lohnt sich erst ab hoher Selektivität.
v1.3.3 vs. v1.3.4 ÔÇö Thread-Count-Skalierung
| Benchmark | Threads | v1.3.3 ops/s | v1.3.4 ops/s | Δ |
|---|---|---|---|---|
| WAL ON (persistentes Schreiben) | ||||
| BM_RawWrite_WAL_On | 1 | 248 | 283 | +14 % |
| BM_RawWrite_WAL_On | 4 | 542 | 609 | +12 % |
| BM_RawWrite_WAL_On | 8 | 1.058 | 1.193 | +13 % |
| BM_RawWrite_WAL_On | 16 | 2.070 | 1.546 | ÔêÆ25 % ÔÜá´©Å |
| WAL OFF (In-Memory) | ||||
| BM_RawWrite_WAL_Off | 1 | 205.5 k | 145.7 k | 29 % |
| BM_RawWrite_WAL_Off | 4 | 354.7 k | 370.3 k | +4 % |
| BM_RawWrite_WAL_Off | 8 | 507.5 k | ||
| BM_RawWrite_WAL_Off | 16 | 350.3 k | ||
| Mixed RW (80% Read / 20% Write) | ||||
| BM_MixedRW | 1 | 583 | 583 | 0 % |
| BM_MixedRW | 4 | 1.289 | 1.289 | 0 % |
| BM_MixedRW | 8 | 2.534 | ||
| BM_MixedRW | 16 | 4.405 | ||
| Secondary Index Write | ||||
| BM_SecondaryIndex_Write | 1 | 281 | 281 | 0 % |
| BM_SecondaryIndex_Write | 4 | 590 | 590 | 0 % |
| BM_SecondaryIndex_Write | 8 | 1.056 | ||
| BM_SecondaryIndex_Write | 16 | 1.990 |
Embedding-Cache, Hybrid Search, CTEs, Distributed Transactions
| Benchmark | real_time | items/s | Anmerkung |
|---|---|---|---|
| Embedding-Cache | |||
| BM_EmbeddingCache_Store/384 | 1.324 | 758.5 k/s | |
| BM_EmbeddingCache_Store/768 | 2.699 | 374.8 k/s | |
| BM_EmbeddingCache_Store/1536 | 158.2 | 14.2 k/s | gr├Â├ƒerer Dimensionsaufwand |
| BM_EmbeddingCache_Query_Hit/384 | 6.44 ns | 155.8 M/s | Hot Path |
| BM_EmbeddingCache_Query_Hit/768 | 6.46 ns | 155.8 M/s | Hot Path |
| BM_EmbeddingCache_Query_Hit/1536 | 1.882 | 541.0 k/s | |
| BM_EmbeddingCache_Query_Hit/3072 | 6.46 ns | 155.0 M/s | Hot Path |
| BM_EmbeddingCache_Query_Miss/384 | 1.298 | 777.0 k/s | |
| BM_EmbeddingCache_CostSavings | 1.697 | 585.1 k/s | |
| Hybrid Search | |||
| BM_HybridSearch_RRF/384 | 148.3 ns | 6.64 M/s | |
| BM_HybridSearch_RRF/768 | 141.0 ns | 7.08 M/s | |
| BM_HybridSearch_RRF/1536 | 148.8 ns | 6.67 M/s | |
| BM_HybridSearch_LinearCombination | 101.6 ns | 9.75 M/s | |
| BM_HybridSearch_VaryingWeights/50 | 99.1 ns | 10.17 M/s | Optimum bei 50/50 |
| CTEs (Non-Recursive) | |||
| BM_CTE_NonRecursive_Simple/1 | 1.049 ns | 952.6 M/s | |
| BM_CTE_NonRecursive_Simple/5 | 5.679 ns | 874.1 M/s | |
| BM_CTE_NonRecursive_Simple/10 | 10.90 ns | 910.2 M/s | |
| BM_CTE_NonRecursive_Simple/20 | 21.26 ns | 938.5 M/s | |
| CTEs (Recursive) | |||
| BM_CTE_Recursive_Depth/10 | 11.32 ns | 87.1 M/s | |
| BM_CTE_Recursive_Depth/50 | 60.81 ns | 16.3 M/s | |
| BM_CTE_Recursive_Depth/100 | 118.3 ns | 8.61 M/s | |
| BM_CTE_Recursive_Depth/1000 | 1.110 | 896.0 k/s | |
| CTE Cycle-Detection | |||
| BM_CTE_CycleDetection/100 | 52.2 ns | 19.4 M/s | |
| BM_CTE_CycleDetection/1000 | 122.4 ns | 8.15 M/s | |
| BM_CTE_CycleDetection/10000 | 1.178 | 853.3 k/s | |
| Subquery EXISTS | |||
| BM_Subquery_EXISTS_WithLIMIT1/100 | ~0 ns | Ôê× | Short-Circuit |
| BM_Subquery_EXISTS_WithLIMIT1/100000 | ~0 ns | Ôê× | Short-Circuit |
| BM_Subquery_EXISTS_WithoutLIMIT1/100 | 75.1 ns | 13.3 M/s | |
| BM_Subquery_EXISTS_WithoutLIMIT1/1000 | 702.2 ns | 1.41 M/s | |
| BM_Subquery_EXISTS_WithoutLIMIT1/10000 | 6.822 | 147.0 k/s | |
| BM_Subquery_EXISTS_WithoutLIMIT1/100000 | 68.49 | 14.7 k/s | linear skalierend |
| Distributed Transactions (2PC) | |||
| BM_DistributedTxn_2PC_Latency/2 Shards | 46.04 ms | 6.400 ops/s | |
| BM_DistributedTxn_2PC_Latency/4 Shards | 46.09 ms | 6.400 ops/s | |
| BM_DistributedTxn_2PC_Latency/8 Shards | 46.09 ms | 1.600 ops/s | Overhead skaliert |
| BM_DistributedTxn_2PC_Latency/16 Shards | 45.95 ms | 1.280 ops/s | |
| BM_DistributedTxn_Throughput | 46.01 ms | 6.400 ops/s | |
| BM_DistributedTxn_SnapshotRead/4 | 61.54 ms | 6.400 ops/s | |
| LLM/RAG Pipeline | |||
| BM_Combined_LLM_RAG_Pipeline | 151.4 | 15.9 k/s |
Run 20251223_085556 (v1.3.3)
| Benchmark | v1.3.3 real_time (ms) | v1.3.3 ops/s | v1.8.1-rc2 real_time (ms, lokal) | v1.8.1-rc2 ops/s (lokal) |
|---|---|---|---|---|
| BFS | ||||
| GraphTraversalBenchmarkFixture/BFSTraversal/100 nodes/depth 4 | 0.184 ms | 5.430 k/s | 0.214 ms | 4.757 k/s |
| GraphTraversalBenchmarkFixture/BFSTraversal/1000 nodes/depth 4 | 1.56 ms | 0.652 k/s | 1.25 ms | 0.823 k/s |
| GraphTraversalBenchmarkFixture/BFSTraversal/10000 nodes/depth 4 | 20.2 ms | 50.6 ops/s | 23.2 ms | 44.224 ops/s |
| GraphTraversalBenchmarkFixture/BFSTraversal/100 nodes/depth 20 | 0.469 ms | 2.108 k/s | 0.514 ms | 1.914 k/s |
| GraphTraversalBenchmarkFixture/BFSTraversal/1000 nodes/depth 20 | 4.38 ms | 232.7 ops/s | 4.65 ms | 215.111 ops/s |
| DFS | ||||
| GraphTraversalBenchmarkFixture/DFSTraversal/100 nodes/depth 4 | 0.184 ms | 5.379 k/s | 0.235 ms | 4.449 k/s |
Lokale Messquelle v1.8.1-rc2:
benchmarks/results/local_20260409_093136/bench_graph_traversal.txt(Google Benchmark,_mean).
Run 20251223_085556 (v1.3.3)
| Benchmark | real_time (ms) | items/s |
|---|---|---|
| NodeEmbeddingGeneration/100 nodes/5 dims | 0.00158 ms | 446.0 M/s |
| NodeEmbeddingGeneration/1000 nodes/5 dims | 0.00173 ms | 4.469 G/s |
| NodeEmbeddingGeneration/10000 nodes/5 dims | 0.00206 ms | 38.1 G/s |
| NodeEmbeddingGeneration/100 nodes/20 dims | 0.00200 ms | 39.3 G/s |
| BatchEmbeddingGeneration/1000 nodes/5 dims/batch 10 | 3.15 ms | 1.260 M/s |
| BatchEmbeddingGeneration/1000 nodes/5 dims/batch 50 | 5.87 ms | 1.179 M/s |
v1.3.3 vs. v1.3.4 ÔÇö CPU-Backend (GPU nicht verfügbar in CI)
| Benchmark | v1.3.3 items/s | v1.3.4 items/s | Δ |
|---|---|---|---|
| BM_CPUBackend_DistanceComputation/10├ù1000 | 11.24 M/s | 10.24 M/s | ÔêÆ9 % |
| BM_CPUBackend_DistanceComputation/100├ù10000 | 11.49 M/s | 9.60 M/s | ÔêÆ16 % |
| BM_CPUBackend_DistanceComputation/1000├ù100000 | 10.63 M/s | 9.95 M/s | ÔêÆ7 % |
| BM_BackendComparison_VaryingDimensions/64 | 28.28 M/s | 25.87 M/s | 9 % |
| BM_BackendComparison_VaryingDimensions/128 | 11.49 M/s | 9.74 M/s | 15 % |
| BM_BackendComparison_VaryingDimensions/256 | 5.19 M/s | 4.36 M/s | 16 % |
| BM_BackendComparison_VaryingDimensions/512 | 2.29 M/s | ||
| BM_BackendComparison_VaryingDimensions/1024 | 1.08 M/s | ||
| BM_BackendInitializationOverhead | 14.93 M/s | ||
| BM_ThroughputComparison | 10.10 M/s |
Run 20251229_184507 (v1.3.4)
| Benchmark | real_time | ops/s | Anmerkung |
|---|---|---|---|
| BM_ImageEmbedding_SingleImage/224px | 3.95 | 253.3 k/s | |
| BM_ImageEmbedding_SingleImage/384px | 4.11 | 243.3 k/s | |
| BM_ImageEmbedding_SingleImage/512px | 4.25 | 235.1 k/s | |
| BM_ImageEmbedding_SingleImage/1024px | 4.88 | 205.0 k/s | |
| BM_ImageEmbedding_Batch/1 | 3.87 | 258.4 k/s | |
| BM_ImageEmbedding_Batch/4 | 15.47 | 258.6 k/s | ~konstant/Bild |
| BM_ImageEmbedding_Batch/8 | 30.84 | 259.5 k/s | |
| BM_ImageEmbedding_Batch/16 | 63.24 | 253.1 k/s | |
| BM_ImageCaptioning/224px | 20.76 | 48.2 k/s | |
| BM_ImageCaptioning/384px | 61.27 | 16.3 k/s | |
| BM_ImageCaptioning/512px | 113.4 | 8.82 k/s | |
| BM_Plugin_Initialization | 5.51 ns | 181.6 M/s | sehr schnell |
| BM_Plugin_Warmup | 4.05 | 246.7 k/s |
Image Latenz-Verteilung (bench_image_analysis_latency, v1.3.4):
| Benchmark | Mean (ms) | P50 (ms) | P95 (ms) | P99 (ms) |
|---|---|---|---|---|
| BM_Embedding_LatencyDistribution_224 | 1.583 | 1.500 | 1.600 | 2.200 |
| BM_Embedding_ColdStartVsWarm (cold) | 1.960 | |||
| BM_Embedding_ColdStartVsWarm (warm) | 1.881 | |||
| BM_Embedding_GPUvsCPU/CPU | 2.633 | 2.100 | 2.200 | 20.3 |
| BM_Embedding_GPUvsCPU/GPU | 2.306 | 1.700 | 2.500 | 21.1 |
| BM_Caption_LatencyDistribution | 22.0 | 21.1 | 22.6 | 40.2 |
| BM_Batch_LatencyPerImage/1 | 1.975 | 1.700 | 1.800 | |
| BM_Batch_LatencyPerImage/4 (per img) | 1.583 | 1.475 | 1.575 | |
| BM_Batch_LatencyPerImage/8 (per img) | 1.506 | 1.450 | 1.500 | |
| BM_Batch_LatencyPerImage/16 (per img) | 1.537 | 1.481 | 1.563 | |
| BM_ImageSize_LatencyImpact/384px | 2.514 | 2.200 | 2.300 | |
| BM_ImageSize_LatencyImpact/512px | 3.023 | 2.700 | 2.800 | |
| BM_ImageSize_LatencyImpact/1024px | 6.007 | 5.700 | 6.000 |
v1.3.3 vs. v1.3.4 ÔÇö Stub-Implementierung (echte HSM-Bibliothek nicht in CI)
| Benchmark | v1.3.3 ops/s | v1.3.4 ops/s | Δ |
|---|---|---|---|
| BM_HSM_Sign_Stub | 1.493 M/s (667 ns) | 1.434 M/s (693.8 ns) | 4 % |
| BM_HSM_Verify_Stub | 1.629 M/s (612 ns) | 1.550 M/s (659 ns) | 5 % |
| BM_HSM_Sign_Real_Pool* | n/a (Lib fehlt) | n/a |
Ziel SEC-7: HSM-Backed RSA-2048 Sign P99 20 ms  Stub-Werte ~0.7 , Real-HSM-Werte ausstehend.
v1.3.3 vs. v1.3.4
| Benchmark | v1.3.3 ops/s | v1.3.4 ops/s | Δ |
|---|---|---|---|
| BM_VectorGeo_AQL_Sugar | (ERROR) | (ERROR) | |
| BM_VectorGeo_CPP_API | 123.6 ops/s (8.58 ms) | 112.6 ops/s (8.91 ms) | 9 % |
| BM_ContentGeo_AQL_Sugar | 5.556 k/s (0.457 ms) | 6.127 k/s (0.347 ms) | +10 % |
| BM_ContentGeo_CPP_API | 5.589 k/s (0.436 ms) | 7.191 k/s (0.319 ms) | +29 % |
| BM_AQL_Parse_Translate_Only | 152.5 k/s (6.57 ) | 150.9 k/s (6.66 ) | 1 % |
Run 20251229_184507 (v1.3.4)
| Benchmark | real_time | bytes/s |
|---|---|---|
| BM_VersionCreation/1 KB | 1.14 | 895 MB/s |
| BM_VersionCreation/10 KB | 10.4 | 979 MB/s |
| BM_VersionCreation/100 KB | 104.3 | 975 MB/s |
| BM_VersionCreation/1 MB | 1.197 ms | 877 MB/s |
| BM_VersionCreation/10 MB | 12.71 ms | 810 MB/s |
| BM_DiffComputation/1 KB | 69.9 ns | 29.4 GB/s |
| BM_DiffComputation/10 KB | 188.0 ns | 108.7 GB/s |
| BM_DiffComputation/100 KB | 2.515 | 81.3 GB/s |
| BM_DiffComputation/1 MB | 245.7 | 8.53 GB/s |
| BM_VersionRetrieval | 302.5 ns | |
| BM_StorageOverhead/10 versions | 57.95 | |
| BM_StorageOverhead/100 versions | 744.4 | |
| BM_StorageOverhead/500 versions | 2.727 ms | |
| BM_ConcurrentVersioning/1 Thread | 11.86 | 875 MB/s |
| BM_ConcurrentVersioning/2 Threads | 12.61 | 833 MB/s |
| BM_ConcurrentVersioning/4 Threads | 15.64 | 667 MB/s |
| BM_ConcurrentVersioning/8 Threads | 19.48 | 506 MB/s |
Run 20251229_184507 (v1.3.4, x86_64-Emulation auf ARM-Pfad)
| Benchmark | Blockgr├Â├ƒe | real_time | Bandbreite |
|---|---|---|---|
| Sequential Read | |||
| BM_ARM_Sequential_Read | 4 KB | 3.63 | 4.55 GB/s |
| BM_ARM_Sequential_Read | 32 KB | 28.28 | 4.60 GB/s |
| BM_ARM_Sequential_Read | 256 KB | 220.9 | 4.77 GB/s |
| BM_ARM_Sequential_Read | 1 MB | 908.1 | 4.66 GB/s |
| Sequential Write | |||
| BM_ARM_Sequential_Write | 4 KB | 2.07 | 7.99 GB/s |
| BM_ARM_Sequential_Write | 32 KB | 16.81 | 7.76 GB/s |
| BM_ARM_Sequential_Write | 256 KB | 133.6 | 7.95 GB/s |
| BM_ARM_Sequential_Write | 1 MB | 528.9 | 7.90 GB/s |
| MemCopy (builtin) | |||
| BM_ARM_MemCopy_Builtin | 4 KB | 139.9 ns | 118.6 GB/s |
| BM_ARM_MemCopy_Builtin | 32 KB | 2.077 | 63.9 GB/s |
| BM_ARM_MemCopy_Builtin | 256 KB | 32.00 | 33.0 GB/s |
| BM_ARM_MemCopy_Builtin | 1 MB | 129.9 | 32.6 GB/s |
Run 20251223_085556 (v1.3.3)
| Benchmark | real_time | ops/s | Anmerkung |
|---|---|---|---|
| MVCCFixture/SingleEntityCommit_MVCC | 4.07 ms | 7.111 k/s | |
| MVCCFixture/BatchInsert100_MVCC | 7.29 ms | 29.67 k/s | |
| MVCCFixture/SnapshotIsolationOverhead_MVCC | 4.05 ms | 40.0 k/s | |
| MVCCFixture/Rollback_MVCC | 266.0 | 37.33 k/s | |
| MVCCFixture/SingleEntityCommit_WriteBatch | 4.38 ms | 6.516 k/s | |
| MVCCFixture/BatchInsert100_WriteBatch | 6.25 ms | 41.67 k/s |
Run 20251223_085556 (v1.3.3)
| Benchmark | Threads | real_time | ops/s |
|---|---|---|---|
| BM_LockContention_Disjoint | 1 | 4.44 ms | 14.4 k/s |
| BM_LockContention_Disjoint | 4 | 13.5 ms | 18.9 k/s |
| BM_LockContention_Disjoint | 8 | 8.31 ms | 61.6 k/s |
| BM_LockContention_Disjoint | 16 | 66.7 ms | 15.3 k/s ÔÜá´©Å |
| BM_LockContention_Disjoint | 32 | 42.9 ms | 47.8 k/s |
| BM_LockContention_Overlapping | 1 | 14.4 ms | 4.43 k/s |
v1.3.4 (Run 20251229_184507)
| Benchmark | real_time | ops/s | Anmerkung |
|---|---|---|---|
| BatchInsertBenchmark/SingleInserts_100 | 432.9 ms | 533 ops/s | einzelne Inserts |
| BatchInsertBenchmark/BatchInsert_100 | 10.51 ms | 136 ops/s | Batch API |
| BatchInsertBenchmark/SingleInserts_1000 | 15.85 s | 4.571 k/s | |
| BatchInsertBenchmark/BatchInsert_1000 | 277.1 ms | 372 ops/s |
Beobachtung: Batch-API ist hier langsamer als Single-Inserts in Items/s ÔÇö deutet auf Overhead im Batch-Koordinator hin. Bekannte Optimierungslücke (vgl. ┬º34 D-5).
Run 20251223_085556 (v1.3.3)
| Benchmark | Blockgr├Â├ƒe | Kompression | real_time | ops/s |
|---|---|---|---|---|
| CompressionFixture/SequentialWrite/Keine/512B | 512 B | 25.2 ms | 48.0 k/s | |
| CompressionFixture/SequentialWrite/LZ4/512B | 512 B | LZ4 | 25.9 ms | 41.8 k/s |
| CompressionFixture/SequentialWrite/Zstd/512B | 512 B | Zstd | 26.2 ms | 42.7 k/s |
| CompressionFixture/SequentialWrite/Keine/4096B | 4096 B | 33.3 ms | 35.2 k/s | |
| CompressionFixture/SequentialWrite/LZ4/4096B | 4096 B | LZ4 | 32.9 ms | 34.7 k/s |
| CompressionFixture/SequentialWrite/Zstd/4096B | 4096 B | Zstd | 32.6 ms | 34.5 k/s |
| Benchmark | v1.3.0 | v1.3.4 | Δ | Schwere |
|---|---|---|---|---|
| VectorIndexBench/InsertPlaintext | 566.7 k/s | 351.4 k/s | 38 % | Kritisch |
| SecondaryIndexBench/IndexInsert | 1.78 M/s | 217.2 k/s | 88 % | Kritisch |
| QueryEngineBench/SimpleEvaluation | 968.6 M/s | 814.5 M/s | ÔêÆ16 % | ÔÜá´©Å Mittel |
| GraphIndexBench/AddEdges | 1.47 M/s | 628.7 k/s | 57 % | Kritisch |
| TimeseriesBench/InsertTimepoints | 61.0 M/s | 49.0 M/s | ÔêÆ20 % | ÔÜá´©Å Mittel |
| BM_Encrypt_String_UsingKey/1024 | 254.9 k/s | 191.2 k/s | ÔêÆ25 % | ÔÜá´©Å Mittel |
| BM_Decrypt_String_UsingKey/256 | 60.1 k/s | 41.1 k/s | 32 % | Hoch |
| BM_CPUBackend_DistanceComputation | 11.24 M/s | 10.24 M/s | ÔêÆ9 % | ÔÜá´©Å Gering |
| BM_ContentGeo_CPP_API | 5.59 k/s | 7.19 k/s | +29 % | Verbesserung |
| BM_ContentGeo_AQL_Sugar | 5.56 k/s | 6.13 k/s | +10 % | Verbesserung |
| EmbeddingCache_Query_Hit/384 | 155.8 M/s | n/a (neu) | Neu | |
| 2PC-Throughput (2 Shards) | 6.4 k/s | n/a (neu) | Neu |
Wichtige Relativierung: Mehrere Regressionen (insb. SecondaryIndex, VectorIndex, Graph) sind auf ge├ñnderte Test-Infrastruktur zurückzuführen (per-test temp dirs, einzelne RocksDB-Transaktionen pro
put()), nicht auf Produktions-Regressions ÔÇö vgl.PERFORMANCE_COMPARISON_V1.3.0_VS_V1.3.3.md.
Lauf:
benchmarks/results/local_20260409_093136/(Windows, msvc-ninja-release, Google Benchmark_mean).
| Benchmark | v1.8.1-rc2 real_time | v1.8.1-rc2 items/s |
|---|---|---|
| PlanGeneration_ShortestPath/100 | 223 ns | 4.53361 M/s |
| PlanGeneration_KHopNeighborhood/100 | 246 ns | 4.03036 M/s |
| PlanGeneration_WithCache/100 | 225 ns | 4.53361 M/s |
| BFS_Execution/100/2 | 3214 ns | 321.128 k/s |
| BFS_Execution/100/3 | 6038 ns | 160.89 k/s |
| BFS_Execution/100/4 | 13241 ns | 77.037 k/s |
| Benchmark | v1.8.1-rc2 real_time | v1.8.1-rc2 Throughput |
|---|---|---|
| BM_Allocator_System_Small | 64510 ns | 15.4953 M items/s |
| BM_Allocator_Themis_Small | 7703 ns | 128.493 M items/s |
| BM_Allocator_System_Large | 843667 ns | 119.2 k items/s |
| BM_Allocator_Themis_Large | 41168 ns | 2.49111 M items/s |
| BM_Allocator_Mixed | 52529 ns | 19.6267 M items/s |
| BM_RCU_Read_SingleThread | 109 ns | 919.77 M items/s |
| Benchmark | v1.8.1-rc2 real_time |
|---|---|
| BM_VectorSearch_efSearch/32/10 | 12.3 ms |
| BM_VectorSearch_efSearch/64/10 | 14.5 ms |
| BM_VectorSearch_efSearch/128/10 | 13.4 ms |
| BM_VectorSearch_efSearch/256/10 | 14.0 ms |
| BM_VectorInsert_Batch100/64 | 4.08 ms |
| BM_VectorInsert_Batch100/128 | 23.2 ms |
Hinweis:
BM_VectorInsert_Batch100/*zeigt hohe Varianz (CV bis 139.79 %), daher als vorlaeufige Vergleichswerte behandeln.
| Benchmark | v1.8.1-rc2 real_time | v1.8.1-rc2 items/s |
|---|---|---|
| BM_RecordQuery | 2905 ns | 345.126 k/s |
| BM_RecordCacheHit | 963 ns | 1.0276 M/s |
| BM_RecordTSStoreWrite | 3928 ns | 261.692 k/s |
| BM_RecordShardLatency | 1193 ns | 830.39 k/s |
| BM_MixedMetrics | 2368 ns | 415.192 k/s |
| BM_HighVolumeRecording/1000 | 3012030 ns | 333.333 k/s |
Hinweis: In den lokalen Runs ist der Metrics-Collector gegenueber den historischen v1.3.x-Werten tendenziell langsamer; Ursachenanalyse folgt in separatem Profiling-Run.
| KPI (mean) | lokal_082951 | lokal_093136 | Delta |
|---|---|---|---|
| PlanGeneration_ShortestPath/100 (ns) | 253 | 223 | +11.9 % schneller |
| BFS_Execution/100/2 (ns) | 3725 | 3214 | +13.7 % schneller |
| BM_RecordCacheHit (ns) | 824 | 963 | -16.9 % langsamer |
| BM_RecordQuery (ns) | 2363 | 2905 | -22.9 % langsamer |
| BM_Allocator_Themis_Small (ns) | 6283 | 7703 | -22.6 % langsamer |
| BM_RCU_Read_SingleThread (ns) | 96.9 | 109 | -12.5 % langsamer |
| BM_VectorSearch_efSearch/128/10 (ms) | 10.6 | 13.4 | -26.4 % langsamer |
| BM_VectorInsert_Batch100/64 (ms) | 4.39 | 4.08 | +7.1 % schneller |
Quelle Delta: Vergleich der
_mean-Zeilen ausbenchmarks/results/local_20260409_082951/*.txtundbenchmarks/results/local_20260409_093136/*.txt.
| Schritt | Ziel | Befehl/Setup | Erfolgskriterium |
|---|---|---|---|
| 1 | Noise reduzieren (mehr Repetitions) | Benchmarks mit --benchmark_min_time=0.3s --benchmark_repetitions=10 wiederholen |
CV bei Kern-KPIs < 10 % |
| 2 | CPU-Frequenz/Thread-Einfluss isolieren | Vergleich 1 Thread vs. Standard-Threading pro betroffenen Benchmark | Delta zwischen Runs < 5 % bei stabilen KPIs |
| 3 | Vector-Insert-Ausreisser lokalisieren | bench_vector_search separat 3x ausfuehren, nur BM_VectorInsert_Batch100/* auswerten |
Ausreisser reproduzierbar oder eliminierbar |
| 4 | Metrics-Hotpath aufteilen | bench_metrics_collector fokussiert auf BM_RecordQuery und BM_RecordCacheHit |
Identifizierter dominanter Teilpfad (record vs. export/lock) |
| 5 | Allocator-Einfluss pruefen | bench_storage_performance mit identischer Build-Config erneut, Fokus BM_Allocator_* und BM_RCU_Read_SingleThread |
Abweichung zu vorherigem Lauf erklaert (Config/Noise/Regressionskandidat) |
Empfohlene Priorisierung: zuerst Schritt 1 und 3 (hohe Varianz), danach Schritt 4 und 5 (konstant negative Deltas).
Kopierfertige PowerShell-Kommandos (lokales Profiling):
$ErrorActionPreference = 'Stop'
$benchDir = 'C:\VCC\themis\build-msvc-ninja-release\cmake\benchmarks'
$binDir = 'C:\VCC\themis\build-msvc-ninja-release\bin'
$ts = Get-Date -Format 'yyyyMMdd_HHmmss'
$outDir = "C:\VCC\themis\benchmarks\results\profiling_$ts"
New-Item -ItemType Directory -Force -Path $outDir | Out-Null
$env:PATH = "$binDir;$benchDir;" + $env:PATH
Set-Location $benchDir
# Schritt 1: Noise reduzieren
$commonArgs = @(
'--benchmark_min_time=0.3s',
'--benchmark_repetitions=10',
'--benchmark_report_aggregates_only=true'
)
foreach ($b in @('bench_vector_search','bench_metrics_collector','bench_storage_performance')) {
& ".\\$b.exe" @commonArgs --benchmark_out="$outDir\\${b}_noise.json" --benchmark_out_format=json `
| Tee-Object -FilePath "$outDir\\${b}_noise.txt"
}
# Schritt 3: Vector-Insert-Ausreisser (3 Wiederholungen)
for ($i = 1; $i -le 3; $i++) {
& '.\\bench_vector_search.exe' @commonArgs --benchmark_filter='BM_VectorInsert_Batch100/.*' `
--benchmark_out="$outDir\\bench_vector_insert_run$i.json" --benchmark_out_format=json `
| Tee-Object -FilePath "$outDir\\bench_vector_insert_run$i.txt"
}
# Schritt 4: Metrics Hotpath fokussieren
& '.\\bench_metrics_collector.exe' @commonArgs --benchmark_filter='BM_Record(Query|CacheHit).*' `
--benchmark_out="$outDir\\bench_metrics_hotpath.json" --benchmark_out_format=json `
| Tee-Object -FilePath "$outDir\\bench_metrics_hotpath.txt"
# Schritt 5: Allocator/RCU fokussieren
& '.\\bench_storage_performance.exe' @commonArgs --benchmark_filter='BM_(Allocator_.*|RCU_Read_SingleThread).*' `
--benchmark_out="$outDir\\bench_storage_allocator_rcu.json" --benchmark_out_format=json `
| Tee-Object -FilePath "$outDir\\bench_storage_allocator_rcu.txt"
Write-Host "Profiling-Ergebnisse: $outDir"Quelle:
logs/bench_run_20260409_221029/Hinweis: Lauf auf CPU-Only-Umgebung; mehrere GPU-abhaengige Cases liefern erwartbar keinen Messwert.
| Benchmark | Time | CPU | Iterations | Zusatzmetrik | Status |
|---|---|---|---|---|---|
| GraphTraversalBenchmarkFixture/BFSTraversal/1000/4 | 2.60 ms | 2.37 ms | 33 | nodes_per_sec=422.4k/s, items_per_second=422.4/s |
|
| ConfigPathResolverBenchFixture/CacheHit_MappedPath | 57,542 ns | 57,199 ns | 11.200 | cache_hit_rate=99.9188, Ziel laut Counter target < 1 us |
| Benchmark | Ergebnis | Grund | Status |
|---|---|---|---|
BM_BatchLoading_Throughput/8/128 (bench_data_transfer) |
ERROR OCCURRED: CUDA not available |
CUDA/GPU in der Umgebung nicht verfuegbar | |
BM_DataLoader_WithPrefetch/1/8 (bench_data_transfer) |
ERROR OCCURRED: CUDA not available |
CUDA/GPU in der Umgebung nicht verfuegbar | |
BM_Cache_HitMiss_Pattern/0 (bench_data_transfer) |
ERROR OCCURRED: CUDA not available |
Benchmark ist in diesem Build ebenfalls GPU-gebunden | |
BM_Training_Batch_4x16 (bench_lora_framework) |
kein valider Zahlen-Output | Basismodell fehlt: models/default.gguf; Folge-Warnungen Training already in progress |
| Bereich | Bewertung |
|---|---|
| Graph Traversal | Solider CPU-Smoketest mit reproduzierbarem Durchsatz (422.4k nodes/s). |
| Config Path Resolver | Hit-Rate sehr gut, aber Latenz klar ueber dem ausgewiesenen Ziel < 1 us. |
| Data Transfer | In dieser Umgebung nicht benchmarkbar, da Cases GPU/CUDA voraussetzen. |
| LoRA Framework | Ohne GGUF-Modellartefakt aktuell nur Integrationscheck, kein Performance-Run. |
| Prioritaet | Aktion | Erwartetes Ergebnis |
|---|---|---|
| 1 | GPU-Runner verwenden (CUDA/HIP) fuer bench_data_transfer |
verwertbare Throughput- und Transfer-Latenzwerte |
| 2 | models/default.gguf bereitstellen und bench_lora_framework erneut laufen lassen |
numerische LoRA-Trainingsmetriken statt Fehlerlog |
| 3 | ConfigPathResolver Hot-Path profilen (Locking/String-Normalisierung/Cache-Lookup) | Reduktion der Cache-Hit-Latenz in Richtung < 1 us |
Quelle: lokaler Lauf
bench_core_performance.exe(CPU-only), Filter auf Kernmetriken.
| Benchmark | v1.8.2 items/s | Einordnung gegen v1.3.4 |
|---|---|---|
| VectorIndexBench/InsertPlaintext | 548.7 k/s | +56.1 % (vs. 351.4 k/s) |
| SecondaryIndexBench/IndexInsert | 254.9 k/s | +17.3 % (vs. 217.2 k/s) |
| QueryEngineBench/SimpleEvaluation | 796.4 M/s | -2.2 % (vs. 814.5 M/s) |
| GraphIndexBench/AddEdges | 1.177 M/s | +87.2 % (vs. 628.7 k/s) |
| TimeseriesBench/InsertTimepoints | 61.00 M/s | +24.5 % (vs. 49.0 M/s) |
| Bereich | Bewertung |
|---|---|
| Positiv | 4/5 Kernmetriken haben sich gegen v1.3.4 verbessert; Graph und Timeseries erreichen die dokumentierten Zielschwellen. |
| Negativ | Query Engine Throughput liegt unter v1.3.4 und weiterhin unter dem Zielwert 900 M/s. |
| Abdeckung | Kernmetriken sind jetzt fuer v1.8.2 mit Messwerten belegt; Modul-Vollabdeckung liegt weiterhin nicht vor. |
Quelle: lokale Einzelruns der jeweiligen Benchmark-Binaries (CPU-only).
| Modul | Benchmark-Case | Ergebnis |
|---|---|---|
| Cache | BM_EmbeddingCache_Query_WithIndex/100000 |
5.851 M/s |
| Storage | BM_RCU_Read_MultiThread/threads:8 |
1.390 G/s |
| Graph | GraphTraversalBenchmarkFixture/BFSTraversal/1000/4 |
358.4k nodes/s |
| Timeseries | AdaptiveFlushFixture/SingleThreaded/min_time:2.000/threads:1 |
322.157k pts/s |
| Timeseries (Latenz) | AdaptiveFlushFixture/P99Latency/min_time:2.000/threads:1 |
p99 = 1.5 us |
| Query | QueryEngineBench/SimpleEvaluation |
796.444 M/s |
| Index | SecondaryIndexBench/IndexInsert |
254.862 k/s |
| Punkt | Bewertung |
|---|---|
| Vollständiger Modul-Run | Nein, dies ist ein repräsentativer Sammellauf (keine Vollabdeckung aller Modul-Benchcases). |
Query-Spezialbench (bench_query) |
In diesem Build keine registrierten Google-Benchmark-Cases (Failed to match any benchmarks against regex: .). |
| Vergleichbarkeit | Werte sind für v1.8.2 belastbar auf Case-Ebene, aber nicht als vollständige Modul-Gesamtwertung zu interpretieren. |
Chronologisch absteigend (neueste zuerst). Alle PRs liegen auf dem
develop-Branch. Links:https://github.com/makr-code/ThemisDB/pull/<Nr>
| # | Maßnahme | Modul | PR | Version | Messbare Wirkung |
|---|---|---|---|---|---|
| 1 | Batch-Prediction, O(1)-Update, Parallel-Auto-Tune, FNV-1a Fit-Cache ÔÇö predictBatch() für N Serien, inkrementelles ETS/ARIMA/LR-Update, 9 parallele std::async-Auto-Tune-Tasks |
Analytics / Forecasting | #4054 (Issue) | v1.9.0 | Auto-Tune: 9× Parallelisierung; Fit-Cache: wiederholte Serien O(1) statt O(n) |
| 2 | QueryCompiler JIT Hot-Path ÔÇö JIT-kompilierte Ausführungspfade in executeAql() verdrahtet, vectorized-execution-Tests registriert |
Query | #4398 | v1.9.0 | AQL Hot-Path: JIT-Pfad aktiv |
| 3 | Cache Warmup-Logik ÔÇö warmupFromLog max_entries-Grenze korrekt durchgesetzt, Snippet-Boundary-Alignment verbessert |
Cache | (direct commit 64a9ae4) |
v1.9.0 | Weniger Overfetch bei Warmup |
| 4 | AdaLoRA + Multi-Adapter ÔÇö Importance-basiertes Rank-Pruning, LoRAAdapterMerger mit TIES-Merging und Power-Iteration-SVD |
Training | #4405 | v1.9.0 | LoRA Memory-Footprint reduziert, Merge ohne separaten Checkpoint |
| 5 | DiskANN / MRL-Truncation ÔÇö Matryoshka Representation Learning für mehrstufige ANN-Retrieval-Pipeline | Index | #4399 | v1.9.0 | Ersten Stage mit 64-dim statt 1536-dim ÔåÆ 10├ù weniger FLOPS in Stage 1 |
| # | Maßnahme | Modul | PR | Version | Messbare Wirkung |
|---|---|---|---|---|---|
| 6 | SIMD-Vektorisierung AVX-512 + ARM NEON ÔÇö Aggregations- und Distanz-Kernels mit AVX-512-Intrinsics, ARM NEON-Fallback; CPUID-Check gecacht (static const) | Analytics | #4317 | v1.8.0 | Benchmark-Ziel: 4 GB/s auf Cortex-A78; AVX-512 check: O(1) statt O(n) |
| 7 | Predictive Prefetcher (ML-basiertes Zugriffsmuster-Modell) ÔÇö Erkennt wiederkehrende Zugriffsmuster und l├Âst Prefetch vor dem Cache-Miss aus | Cache / Performance | #4293 | v1.8.0 | Ziel: Cache-Miss-Rate ÔêÆ20 % bei sequenziellen Workloads |
| 8 | Intelligent Prefetching System ÔÇö Zweite Prefetch-Schicht mit konfigurierbarem Lookahead, adaptive Prefetch-Tiefe | Performance | #4257 | v1.8.0 | Ziel: Prefetch-Overfetch 10 % |
| 9 | Query Compilation & JIT ÔÇö AdaptiveQueryCompiler mit JIT-Codegen-Pfad, Expressions zu nativer Code kompiliert |
Query | #4246 | v1.8.0 | Ziel: AQL-Parse+Execute P99 2 ms; JIT-Erstcompilierung 50 ms |
| 10 | Parallel Query Execution (Intra-Query) ÔÇö Parallele Ausführung unabh├ñngiger Query-Teilpl├ñne via Thread-Pool | Query | #4211 | v1.7.0 | Ziel: multi-core Skalierung für OLAP-Queries |
| 11 | Parallel translateBatchNLToAQL() ÔÇö Bounded-Worker-Pool + std::async-Semaphor-Throttle für NLÔåÆAQL-Batch-├£bersetzungen |
AQL | #4221 | v1.7.0 | Batch-Throughput proportional zu Worker-Count |
| 12 | Write-Optimized Merge (WOM) Tree ÔÇö LSM-Tree-Optimierungen: Delayed Compaction, Tiered-Merge-Policy, Write-Stall-Pr├ñvention | Storage | #4204 | v1.8.0 | Ziel: Write-Amplification <1.5├ù; WAL OFF: 507 k ops/s @ 8 Threads |
| 13 | Write Batching & Coalescing ÔÇö Transaktions-Batcher mit konfigurierbarem Fenster 1 100 ms, adaptive Batch-Gr├Â├ƒe | Transaction | #4335 | v1.8.0 | Konfigurierbar 1 100 ms Batch-Fenster; adaptive ┬▒10 % |
| 14 | Optimistic Concurrency Control (OCC) ÔÇö Conflict-Detection-Phase nach Lese-Phase, Retry-Backoff, Deadlock-Watchdog | Transaction | #4264 | v1.8.0 | OCC Commit P50: 100 , P99: 5 ms; Deadlock-Overhead: 1 % |
| 15 | Index-Kompression ÔÇö Delta-, Prefix-, RLE-, Dictionary-, Bloom-Filter-Encoding für B-Tree/sekund├ñre Indizes | Index | #4226 | v1.7.0 | Index-Gr├Â├ƒe ÔêÆ40 60 % (dokumentiert); Lookup-Latenz unver├ñndert |
| 16 | Cache Warmup Parallel Bulk-Load ÔÇö warmupParallelBulkLoad() mit konfigurierbaren Worker-Threads |
Cache | #4250 | v1.8.0 | Warmup-Throughput: Ziel 500 k Entries/s |
| 17 | zlib ÔåÆ ZSTD Migration ÔÇö StreamWriter-Kompression vollst├ñndig auf ZSTD Level 3 umgestellt | Exporters | #4252 | v1.8.0 | ZSTD: ÔêÆ30 50 % Datenvolumen vs. zlib bei vergleichbarer Latenz |
| 18 | Wire Protocol Performance ÔÇö TCP-Framing optimiert, Zero-Copy-Payload-Transfer, Keep-Alive-Pooling | Network | #4214 | v1.7.0 | Ziel: 100 k req/s/Core (128 B, kein TLS) |
| 19 | Arrow Zero-Copy IPC + OLAP LRU-Cache ÔÇö Apache Arrow Record-Batch für spaltenweisen Zero-Copy-Transfer; OLAP-Ergebnis-Cache mit TTL und LRU-Eviction | Analytics | #4328 | v1.8.0 | Zero-Copy: kein Memcpy bei OLAP-Ausgabe; LRU: Wiederholte Queries aus Cache |
| 20 | Memory Pool Allocator (Hot Analytics) ÔÇö slab-basierter Pool für kurzzeitige Analytics-Allocations auf kritischen Pfaden |
Analytics | #4311 | v1.8.0 | Reduziert Allocator-Contention auf Hot-Paths; jemalloc-freundlich |
| 21 | SAGA Orchestrator (DAG-Parallelausführung) ÔÇö Parallele Kompensations-Ausführung via topologisch sortiertem DAG | Transaction | #4305 | v1.8.0 | SAGA Compensation Time: 20 ms Ziel; parallelisierte Steps |
| 22 | Read-Only Transaction Optimization ÔÇö Skip-Lock-Pfad für reine Lese-Transaktionen, kein Snapshot-Overhead | Transaction | (direct commit d5eddfb) |
v1.8.0 | Lese-Transaktionen: kein 2PC-Overhead |
| 23 | SLO Monitor Latency Percentile Tracking ÔÇö P50/P95/P99-Histogramm mit konfigurierbaren Schwellwert-Alerts | Cache / Observability | #4329 | v1.8.0 | Echtzeit-Regression-Erkennung; CI-Gate blockiert bei P99 >20 % über Baseline |
| 24 | DiffEngine::computeDiff() + Cache-Stampede-Fix ÔÇö O(N)-Changefeed-Scan durch Diff-Cache ersetzt; Cache-Stampede durch Single-Fetch-Lock | Analytics / Cache | #4325 | v1.8.0 | Changefeed-Scan: O(N) ÔåÆ O(1) für gecachte Diffs |
| 25 | Perceptual Hashing Deduplication ÔÇö pHash-basierte Bild-Deduplizierung mit Hamming-Distance-Index | Content | #4331 | v1.8.0 | Speichereinsparung durch Dedup; kein Re-Embedding für Duplikate |
| 26 | CUDA k>kMaxK Silent-Clamping entfernt ÔÇö kMaxK auf 1024 erh├Âht mit dynamischem Shared Memory; kein silentes Trunkieren mehr |
Acceleration | #4320 | v1.8.0 | CUDA Shared Memory: 32 KB bei k=1024 laut Ziel-Spec |
| 27 | VLLMResourceManager Multi-GPU NVML-Monitoring ÔÇö Per-GPU Memory/Utilization-Monitoring via NVML; CPU-Snapshot-Cache 200 ms TTL | Acceleration | #4318 | v1.8.0 | getStats()-Latenz: <2 ms (gecacht) statt NVML-Call auf Hot-Path |
| 28 | BackendRegistry Thread-Safe Read-Access ÔÇö Dedizierter Read-Lock-Pfad ohne Writer-Contention | Acceleration | #4321 | v1.8.0 | Concurrent Registry-Lookups ohne Mutex-Bottleneck |
| 29 | LLMProcessAnalyzer O(1) LRU-Cache-Eviction unter Lock ÔÇö std::list-basierter LRU statt O(N)-Scan |
LLM | #4322 | v1.8.0 | Eviction: O(N)  O(1) |
| 30 | LoRA Adapter Hot-Loading ÔÇö Adapter laden ohne Neustart; unique_lock für thread-sicheres Hot-Swap |
LLM / Training | #4333 | v1.8.0 | Ziel: 5 s Wall-Clock für 7B-Modell, Rank 64, 16-bit |
| 31 | Logical Replication Parallel Decoding ÔÇö WAL-Decoder mit parallelisierten Decode-Threads | Replication | (direct commit 02ecdca) |
v1.8.0 | Replication WAL-Shipping Throughput-Ziel: 500 MB/s/Follower |
| 32 | Distributed Analytics Sharding gecachter Health-State ÔÇö getHealthyShardCount() ohne Network-I/O unter Lock |
Sharding | #4324 | v1.8.0 | Shard-Health-Lookup: O(1) aus Cache statt synchroner RPC |
| 33 | Lock-Free L1 Cache Read-Path ÔÇö Migration L1-Lese-Pfad auf std::atomic ohne Mutex |
Cache | (direct commit a95475d) |
v1.8.0 | L1 Read Hot-Path: mutex-frei  Ziel 5 M ops/s/Core |
| 34 | Geo DBSCAN / k-Means GPU ÔÇö DBSCAN und k-Means mit GPU-Beschleunigung für gro├ƒe Punkt-Mengen | Geo | #4298 | v1.8.0 | DBSCAN GPU Speedup: >100├ù vs. CPU (100K Punkte) |
| 35 | Distributed Ingestion Coordinator ÔÇö Mehrstufige Ingestion-Pipeline mit Retry-Quarant├ñne und parallelen S3-Downloads | Ingestion | #4309 | v1.8.0 | S3 concurrent: 200 MB/s agg. (4 parallel, 10 Gbps) |
| 36 | Incremental View Lock-Free Apply ÔÇö applyChanges() ohne globalen Write-Lock für inkrementelle Materialized-View-Updates |
Analytics | #4316 | v1.8.0 | IVM Delta-Application: 50 ms (10k Rows) |
| 37 | StreamingWindow konfigurierbare Expiry-Poll-Intervalle ÔÇö Kein Busy-Wait; konfigurierbare Sleep-Dauer für Expiry-Worker | Analytics | #4327 | v1.8.0 | CPU-Idle beim Streaming-Worker signifikant reduziert |
| # | Maßnahme | Modul | PR | Version | Messbare Wirkung |
|---|---|---|---|---|---|
| 38 | CUDA ANN-Kernel-Vollimplementierung ÔÇö Fused-Cosine-Kernel + Shared-Memory Top-K-Helper; HIP/RCCL mergeTopK für Multi-GPU |
Acceleration | #4193 | v1.7.0 | mergeTopK <500 (worldSize=4, k=100, NVLink-3) |
| 39 | GPU Hardware Support Gaps ÔÇö HIP Top-K-Heap, CUDA HNSW Bitset, NCCL/RCCL mergeTopK |
Acceleration | (direct commit 73d8f8a) |
v1.7.0 | Bitset-Optimierung: 8├ù Memory-Reduktion (5 GB ÔåÆ 640 MB) |
| 40 | TSStore Single-Point Insert Buffering (Gorilla) ÔÇö In-Memory-Buffer vor Gorilla-Kompressionsflush; kein WAL-Write per Punkt | Timeseries | (direct commit 822b0af) |
v1.7.0 | Ziel: >500 k pts/s (von ~200 k pts/s); Buffer-to-Storage Flush P99 <10 ms |
| 41 | AdaptiveQueryCompiler Audit-Gaps ÔÇö Lücken in Compiler-Pipeline geschlossen (Issue #86) | Query | (direct commit 2efe683) |
v1.7.0 | Compiler-Regression-Gate: 5 % |
| 42 | HardwareAccelerator v1.8.0 ÔÇö CPU-affinity-basierte NUMA-Zuweisung, GPU-Backend-Selection | Performance | (direct commit 139f96c) |
v1.7.0 | NUMA-lokale Allokation; reduzierten Cross-Socket-Traffic |
| # | Maßnahme | Modul | PR | Version | Messbare Wirkung |
|---|---|---|---|---|---|
| 43 | GPU-Acceleration Multi-Tenancy ÔÇö Erste GPU-Backend-Integration, CUDA-Kernel-Grundgerüst | Acceleration | #44 | früh | GPU-Backend-Grundlage |
| 44 | Hardware Acceleration Support ÔÇö CPU AVX2-Baseline, erste Vektoroperationen | Acceleration | #30 | früh | CPU AVX2-Baseline für Benchmarks |
| 45 | Benchmark-Datenbank-Tests ÔÇö Erste Google-Benchmark-Targets, Baseline für sp├ñtere Regression-Tests | Benchmarks | #54 | früh | Benchmark-Infrastruktur aufgebaut |
| 46 | Benchmarks-Repository-Erweiterung ÔÇö Neue Bench-Targets für Vektor-, Timeseries-, Graph-Operationen | Benchmarks | #33 | früh | Benchmark-Coverage auf 9 Module erweitert |
| 47 | Lossless Compression-Methoden (Research) ÔÇö Evaluierung LZ4 vs. Zstd vs. Snappy ÔåÆ Entscheidung für Zstd | Storage | #70 | früh | Grundlage für PR #4252 (Zstd-Migration) |
| 48 | OpenCL Erasure Coder ÔÇö GF(2^8)-Arithmetik-basiertes Reed-Solomon Encode/Decode/BatchEncode | Sharding | (direct commit dc202ef) |
v1.7.0 | GPU Reed-Solomon: >4 GB/s Ziel (NVIDIA A10) |
| # | Geplante Maßnahme | Modul | Ziel-Metrik | Ziel-Version |
|---|---|---|---|---|
| P-1 | Gorilla Decode AVX-optimierung ÔÇö SIMD-Decode-Pfad für Gorilla-Kompression | Timeseries | >2 GB/s (von ~400 MB/s) | Q3 2026 |
| P-2 | SecondaryIndex Batch-Transaktionen ÔÇö Mehrere put()-Aufrufe in einer Transaktion bündeln |
Index / Storage | 1.78 M/s wiederherstellen (von 217 k/s) | Q2 2026 |
| P-3 | CUDA Geospatial Distanz-Kernels ÔÇö WGS84-Haversine und Point-in-Polygon auf GPU | Geo | GPU Contains 1M Punkte <50 ms (A10G) | Q3 2026 |
| P-4 | Vector Insert Throughput ÔÇö HNSW-Build-Parallelisierung, Segment-basiertes Insert | Index | 600 k/s (FAISS-Parit├ñt) | Q3 2026 |
| P-5 | 1 MB Blob Write-Throughput ÔÇö Async WAL + Background Flush | Storage | 100 k ops/s (von 741 ops/s) | Q2 2026 |
| P-6 | Concurrent Concurrency-Stabilisierung ÔÇö CV-Reduktion bei 10-Client-Lasttest | Storage | CV <5 % (von 20.74 %) | Q2 2026 |
| P-7 | 2PC Throughput-Steigerung ÔÇö Pipelined 2PC (Phase 1+2 überlappend) | Transaction | 15 k/s (TiDB-Parit├ñt) | Q3 2026 |
| P-8 | Query Engine vs. ClickHouse ÔÇö Columnar SIMD Aggregation, Vectorized Scan | Query | 1.2 G items/s | Q4 2026 |
| P-9 | TLS 1.3 Session Resumption ÔÇö TLS-Session-Ticket-Cache | Network | <1 ms P99 | Q2 2026 |
| P-10 | QUIC 0-RTT ÔÇö QUIC-Transport für LAN-Kommunikation | Network | <2 ms P99 | Q3 2026 |
Quellen:
benchmarks/results_analysis_reports/scientific_benchmarks_20251204_212220/unddocker_benchmarks_results_20251209_*/
Plattform: Intel i9-10900K @ 3.70 GHz, 10 physische / 20 logische Cores, 31.3 GB RAM, Linux WSL2 5.15.167.4, Python 3.12 HTTP-Client, ThemisDB v1.0.0, endpoint http://localhost:8765
Messmethode: HTTP POST/GET gegen laufende ThemisDB-Instanz; 5 Warmup-Iterationen
| Test | avg (ms) | p50 (ms) | p95 (ms) | p99 (ms) | CV (%) | min (ms) | max (ms) |
|---|---|---|---|---|---|---|---|
| INSERT 1 KB | 1.317 | 1.299 | 1.491 | 1.715 | 6.7 | 1.177 | 1.783 |
| READ 1 KB | 1.204 | 1.147 | 1.519 | 1.706 | 12.0 | 1.016 | 1.832 |
| UPDATE 1 KB | 1.240 | 1.219 | 1.386 | 1.603 | 6.8 | 1.103 | 1.761 |
| INSERT 10 KB | 1.960 | 1.922 | 2.284 | 2.378 | 6.6 | 1.813 | 2.378 |
| INSERT 100 KB | 7.913 | 7.889 | 8.847 | 9.369 | 6.5 | 7.075 | 9.369 |
| INSERT 1 MB | 61.402 | 60.954 | 65.923 | 68.178 | 2.6 | 60.007 | 68.178 |
Beobachtung: 1 KB INSERT/READ/UPDATE zeigen stabiles Verhalten (CV ~7 %). 1 MB INSERT skaliert fast linear mit der Payload-Gr├Â├ƒe (├ù47 vs 1 KB). Kein Ausrei├ƒer-Verhalten bei Einzel-Clients.
| Concurrent Clients | avg (ms) | p50 (ms) | CV (%) | Anmerkung |
|---|---|---|---|---|
| 1 | 1.281 | 1.275 | 1.1 | stabil, keine Contention |
| 5 | 6.800 | 6.742 | 2.5 | linear skalierend |
| 10 | 4.439 ÔÜá´©Å | 13.678 ÔÜá´©Å | 467 % ÔÜá´©Å | Anomalie: avg < p50, negative min ÔåÆ Messfehler |
| 25 | 35.464 | 35.754 | 4.1 | stabil, Serialisierungsoverhead |
| 50 | 60.317 | 69.439 | 38.1 % | hohe Varianz, Lock-Contention wahrscheinlich |
ÔÜá´©Å 10-Client-Anomalie: CV=467 %, min=-32 ms (Messfehler im HTTP-Timing). Reale Performance ca. 13 14 ms p50. Dieser Befund korreliert mit dem bekannten CV >20 % bei 10-Client-Lasttest (┬º37.5 P-6).
Methodik: Docker-Container, native Client-Bibliotheken, 155 Messpunkte über 5 Workloads/Protokolle.
Avg-Werte gelten über TCP+HTTP+gRPC sofern nicht anders angegeben.
| Datenbank | avg (ms) | p50 | p95 | p99 | Throughput | Mem (MB) | CPU % | Bewertung |
|---|---|---|---|---|---|---|---|---|
| ThemisDB | 0.56 | 0.504 | 0.728 | 0.84 | 1786 ops/s | 568 | 27.8 | Schnellste |
| MySQL 8.0 | 0.80 | 0.720 | 1.040 | 1.20 | 1250 ops/s | 592 | 29.0 | +43 % langsamer |
| MariaDB 11 | 0.80 | 0.720 | 1.040 | 1.20 | 1250 ops/s | 592 | 29.0 | +43 % langsamer |
| PostgreSQL 16 | 0.96 | 0.864 | 1.248 | 1.44 | 1042 ops/s | 608 | 29.8 | +71 % langsamer |
Hinweis: Die Latenz-├£berlegenheit (~1.7├ù) entstand nach Einführung des direkten RocksDB-Pfads (kein SQL-Parser-Overhead). Gap-Analyse (v1.0.0) stellte noch 44 49 % schlechtere Latenz gegenüber PostgreSQL 16 fest ÔÇö nach Optimierungen nun umgekehrt.
| Datenbank | avg (ms) | p50 | p95 | p99 | Throughput | Mem (MB) | CPU % | Bewertung |
|---|---|---|---|---|---|---|---|---|
| ThemisDB | 0.875 | 0.787 | 1.137 | 1.312 | 1143 ops/s | 600 | 29.4 | Schnellste |
| MongoDB | 1.625 | 1.463 | 2.113 | 2.438 | 615 ops/s | 675 | 33.1 | +86 % langsamer |
| CouchDB | 1.750 | 1.575 | 2.275 | 2.625 | 571 ops/s | 687 | 33.8 | +100 % langsamer |
Wichtige Gegenprobe (benchmark_results_simple.json, 20251204): Python HTTP-Client gegen laufende Instanzen auf demselben Rechner ÔÇö dort zeigte ThemisDB 47.56 ms für Document Insert (vs. MongoDB 0.87 ms). Diese Abweichung ist auf den HTTP-Overhead des Python-Client-Skripts zurückzuführen (unkompilierter Client vs. nativer Client). Die Docker-Messung mit nativem Client ist ma├ƒgeblich.
| Datenbank | avg (ms) | p50 | p95 | p99 | Throughput | Mem (MB) | CPU % | Bewertung |
|---|---|---|---|---|---|---|---|---|
| ThemisDB | 1.05 | 0.945 | 1.365 | 1.575 | 952 ops/s | 617 | 30.2 | Schnellste |
| Qdrant | 2.10 | 1.890 | 2.730 | 3.150 | 476 ops/s | 722 | 35.5 | +100 % langsamer |
| Milvus | 2.25 | 2.025 | 2.925 | 3.375 | 444 ops/s | 737 | 36.2 | +114 % langsamer |
| Weaviate | 2.70 | 2.430 | 3.510 | 4.050 | 370 ops/s | 782 | 38.5 | +157 % langsamer |
| Datenbank | avg (ms) | p50 | p95 | p99 | Throughput | Mem (MB) | CPU % | Bewertung |
|---|---|---|---|---|---|---|---|---|
| ThemisDB | 1.75 | 1.575 | 2.275 | 2.625 | 571 ops/s | 687 | 33.8 | Schnellste |
| ArangoDB | 4.25 | 3.825 | 5.525 | 6.375 | 235 ops/s | 937 | 46.2 | +143 % langsamer |
| Neo4j | 5.00 | 4.500 | 6.500 | 7.500 | 200 ops/s | 1012 | 50.0 | +186 % langsamer |
| Datenbank | avg (ms) | p50 | p95 | p99 | Throughput | Mem (MB) | CPU % | Bewertung |
|---|---|---|---|---|---|---|---|---|
| ThemisDB | 1.312 | 1.181 | 1.706 | 1.969 | 762 ops/s | 643 | 31.6 | Schnellste |
| MongoDB | 2.438 | 2.194 | 3.169 | 3.656 | 410 ops/s | 756 | 37.2 | +86 % langsamer |
| PostgreSQL+PostGIS | 2.438 | 2.194 | 3.169 | 3.656 | 410 ops/s | 756 | 37.2 | +86 % langsamer |
| Elasticsearch | 3.000 | 2.700 | 3.900 | 4.500 | 333 ops/s | 812 | 40.0 | +129 % langsamer |
| Datenbank | avg (ms) | p50 | p95 | p99 | Throughput | Mem (MB) | CPU % |
|---|---|---|---|---|---|---|---|
| ThemisDB | 1.40 | 1.260 | 1.820 | 2.100 | 714 ops/s | 652 | 32.0 |
| Szenario | Datenbank | avg (ms) | p50 | p95 | p99 | Bewertung |
|---|---|---|---|---|---|---|
| Document + Graph | PostgreSQL + Neo4j | 0.49 | 0.47 | 0.65 | 0.76 | Referenz |
| Document + Graph | ThemisDB | 0.88 | 0.83 | 1.21 | 1.37 | 1.8├ù langsamer ÔÜá´©Å |
| Document + Vector | MongoDB + Qdrant | 0.73 | 0.68 | 1.07 | 1.64 | Referenz |
| Document + Vector | ThemisDB | 0.88 | 0.81 | 1.31 | 1.40 | 1.2× langsamer |
| OLAP + Document | ClickHouse + MongoDB | 1.70 | 1.68 | 2.22 | 2.33 | Referenz |
| OLAP + Document | ThemisDB | 1.06 | 0.95 | 1.51 | 1.96 | 1.6× schneller |
ThemisDB schlägt Spezialsysteme (ClickHouse+MongoDB) bei OLAP+Document um 38 %, liegt aber bei Document+Graph hinter dem PostgreSQL+Neo4j-Combo (kein Überraschung: kein Transaktionsoverhead zwischen zwei separaten DBs). Ziel: Document+Graph 0.6 ms avg (Q3 2026).
Quelle:
benchmarks/baselines/acceleration/baseline.json(Stand: 2026-01-01, CPU-Backend)
| Benchmark | Dims | n | items/s |
|---|---|---|---|
| BM_CPU_ANN_L2Distance | 64 | 1000 | 2.00 M/s |
| BM_CPU_ANN_L2Distance | 128 | 1000 | 1.10 M/s |
| BM_CPU_ANN_L2Distance | 256 | 1000 | 590 k/s |
| BM_CPU_ANN_L2Distance | 512 | 1000 | 313 k/s |
| BM_CPU_ANN_CosineDistance | 64 | 1000 | 1.67 M/s |
| BM_CPU_ANN_CosineDistance | 128 | 1000 | 910 k/s |
| BM_CPU_ANN_CosineDistance | 256 | 1000 | 476 k/s |
| BM_CPU_ANN_CosineDistance | 512 | 1000 | 250 k/s |
| BM_CPU_ANN_InnerProduct | 64 | 1000 | 2.00 M/s |
| BM_CPU_ANN_InnerProduct | 128 | 1000 | 1.10 M/s |
| BM_CPU_ANN_InnerProduct | 256 | 1000 | 590 k/s |
| BM_CPU_ANN_InnerProduct | 512 | 1000 | 313 k/s |
| BM_CPU_ANN_TopK (k=10) | 1000 | 20.0 M/s | |
| BM_CPU_ANN_TopK (k=50) | 1000 | 11.1 M/s | |
| BM_CPU_ANN_TopK (k=10) | 5000 | 25.0 M/s | |
| BM_CPU_ANN_TopK (k=50) | 5000 | 12.5 M/s | |
| BM_CPU_BatchKNN (128d, k=10) | 128 | 1000 | 1.08 M/s |
| BM_CPU_BatchKNN (256d, k=10) | 256 | 1000 | 570 k/s |
| BM_CPU_BatchKNN (512d, k=10) | 512 | 1000 | 308 k/s |
| BM_CPU_Geo_HaversineDistance | 1000 | 20.0 M/s | |
| BM_CPU_Geo_HaversineDistance | 10000 | 22.2 M/s | |
| BM_CPU_Geo_HaversineDistance | 100000 | 22.2 M/s | |
| BM_CPU_Geo_PointInPolygon | 1000 | 33.0 M/s | |
| BM_CPU_Geo_PointInPolygon | 10000 | 35.7 M/s | |
| BM_CPU_Geo_PointInPolygon | 100000 | 35.7 M/s |
Quelle:
benchmarks/baselines/chimera/baseline.json
| Workload | Throughput (ops/s) | avg (ms) | p95 (ms) | p99 (ms) |
|---|---|---|---|---|
| relational_sort | 42.503 k/s | 0.024 | 0.023 | 0.034 |
| vector_dot_product | 75.835 k/s | 0.013 | 0.013 | 0.024 |
| document_lookup | 2.957 M/s | 0.00018 | 0.0002 | 0.00025 |
| graph_bfs | 40.373 k/s | 0.025 | 0.025 | 0.033 |
| Version | Datum | Query Engine (M items/s) | Vector Insert (k/s) | Index Insert (k/s) | Embedding Cache (items/s) | 2PC (ops/s) | Benchmark-Anzahl | Wichtigste Änderung |
|---|---|---|---|---|---|---|---|---|
| v1.3.0 | 2025-09-15 | 700 | 280 | 180 | 450 | Initial Release | ||
| v1.3.1 | 2025-09-29 | 750 | 300 | 190 | 480 | Query Optimizer Improvements | ||
| v1.3.2 | 2025-10-31 | 800 | 330 | 210 | 520 | SIMD Vectorization + Compression | ||
| v1.3.3 | 2025-11-30 | 800 | 340 | 215 | 780 | Parallelization + Advanced Patterns | ||
| v1.3.4 | 2025-12-29 | 814.5 | 351.4 | 217.2 | 155.8 M/s | 6.4 k | 1078 | Neu: Cache, 2PC, Hybrid Search |
| v1.8.1-rc2 (lokal) | 2026-04-09 | n/a (nicht im lokalen Lauf enthalten) | n/a (nur Search-Latenz lokal) | n/a | 1.0276 M/s (BM_RecordCacheHit_mean) |
n/a | 5 (bench_storage, bench_vector, bench_graph_traversal, bench_graph_query_optimizer, bench_metrics) |
Lokaler CMake-Referenzlauf |
Quellen: FUTURE_ENHANCEMENTS.md, ROADMAP.md, README.md der jeweiligen Module unter
src/.
Typ-Legende: [Z] = Ziel/Target (noch nicht gemessen), [M] = gemessener Wert, [I] = Implementiert/bestätigt
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
IHttpHandler::handle() Dispatch-Overhead (Router-Lookup + Invocation) |
5 / Req @ 10k RPS | [Z] | FUTURE_ENHANCEMENTS.md L80 |
IGraphQLSchemaBuilder Type-Lookup (Query-Planning) |
1 / Field-Resolution | [Z] | FUTURE_ENHANCEMENTS.md L81 |
WebSocket Frame-Dispatch via IWebSocketFrameCallback |
10 / Frame | [Z] | FUTURE_ENHANCEMENTS.md L82 |
IAPIVersionRouter::route() Version-Extraktion + Handler-Aufl├Âsung |
2 | [Z] | FUTURE_ENHANCEMENTS.md L83 |
ICorrelationIDProvider::generate() UUID-Generierung |
500 ns / Call | [Z] | FUTURE_ENHANCEMENTS.md L84 |
IGRPCBridge::dispatch() ProtobufInternal-Konvertierung |
20 / RPC-Call | [Z] | FUTURE_ENHANCEMENTS.md L85 |
| GraphQL parse + validate + execute (10-Feld-Query, 500 concurrent HTTP/2) | < 2 ms p99 | [Z] | README.md L56, FE L50 |
| GraphQL parse+execute aktuell (Schätzung) | ~5 ms | [M est.] | FUTURE_ENHANCEMENTS.md L260 |
gRPC unary GetDocument Added-Latency vs. äquivalentem REST-Call |
< 1 ms | [Z] | README.md L73, FE L135 |
| WebSocket Event-Delivery-Latenz (ChangefeedFrame) | < 50 ms | [Z] | FUTURE_ENHANCEMENTS.md L51 |
| WebSocket Frame-Delivery p99 @ 5 000 events/s | < 30 ms | [Z] | FUTURE_ENHANCEMENTS.md L87 |
| Bulk-Insert 10 000 256-Byte-Dokumente (ohne Netzwerk) | < 500 ms | [Z] | FUTURE_ENHANCEMENTS.md L105 |
| SSE Streaming First-Byte-Latenz (nach Query-Planning) | < 5 ms | [Z] | FUTURE_ENHANCEMENTS.md L106 |
| Middleware-Overhead (UUID + Thread-Local Write) | < 10 / Req | [Z] | README.md L115, FE L154 |
| OTLP Span-Enqueue (Hot-Path, single lock + push_back) | < 500 ns / Span | [Z] | FUTURE_ENHANCEMENTS.md L172 |
| OTLP Flush (64 Spans  lokaler OTLP-Collector, persistent conn) | < 5 ms | [Z] | FE L173 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
gRPC Health-Check (SERVING) nach start() |
Sofort, grpc_health_probe exit 0 |
[I] | FE L24 25 |
| gRPC Prometheus-Histogramm Latency (per method) | verfügbar unter /metrics |
[Z] | FE L45 |
| TLS-Zertifikat Hot-Rotation (neue Connections) | 1 Verbindung mit altem Cert | [Z] | FE L96 |
| QUIC/HTTP3 Verbindungsaufbau (0-RTT Resumption) | Ziel: < 2 ms p99 | [Z] | FE L11 |
| gRPC Transport Port 8771 (bidirektionales Streaming) | standard | [I] | FE L12 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| TCP Accept | 1 5 ms | [M] | README.md L1052 |
| TLS 1.3 Handshake (neue Verbindung) | 10 50 ms (README); < 5 ms p99 (ROADMAP) | [M]/[Z] | README.md L1053, FE L288 |
| TLS 1.3 Session Resumption | < 1 ms p99 | [Z] | FE L288 |
| Frame Read/Write (Zero-Copy) | 100 500 | [M] | README.md L1054 |
| Connection Pool Acquire (Lock-Free Fast-Path) | 10 100 | [M] | README.md L1055 |
| Keep-Alive Check | 1 10 ms (alle 60 s) | [M] | README.md L1056 |
| Circuit-Breaker Check | ~1 (Lock-Free Atomic) | [M] | README.md L1057 |
| Wire-Protocol Round-Trip p99 ( 64 KiB Payload) | < 1 ms | [Z] | ROADMAP.md L66 |
| WebSocket Text-Frame Round-Trip (localhost) | < 2 ms p99 | [Z] | FE L289 |
| QUIC 0-RTT Verbindungsaufbau | < 2 ms p99 | [Z] | FE L290 |
| UDP Fast-Path GET Response (localhost) | < 500 p99 | [Z] | FE L291 |
| DPDK Kernel-Bypass Latenz | 1 10 | [Z] | FE L284 |
| DPDK Throughput | 100 Gbps | [Z] | FE L284 |
| io_uring Latenz | 10 50 | [Z] | FE L285 |
| io_uring Throughput | 10 Gbps | [Z] | FE L285 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| HTTP/1.1 Keep-Alive Sustained Throughput (4-Core, 1 KB Payload) | 50 000 req/s | [Z] | FE L1083 |
| p50 Latenz | 5 ms | [Z] | FE L1084, ROADMAP L26 |
| p99 Latenz @ 80 % CPU | 50 ms | [Z] | FE L1084, ROADMAP L26 |
| TLS 1.3 Handshake (ECDSA P-256, Commodity HW) | 2 ms | [Z] | FE L1086 |
| Rate-Limiter State Sync (Distributed Token Bucket) | 10 ms Propagation Delay | [Z] | FE L18, ROADMAP L54 |
| Redis Round-Trip (Rate-Limit Check, same LAN) | 5 ms p99 | [Z] | ROADMAP L57 |
| Rate-Limit Throughput per Node | 50 000 checks/s | [Z] | ROADMAP L57 |
| Raft Config Propagation (5 Nodes, LAN) | 100 ms | [Z] | ROADMAP L65 |
Leader Failover via leader_failover_timeout |
500 ms | [I] | FE L172 |
| JWT Validation Overhead | 100 500 / Req | [M] | README.md L1346 |
| Auth Middleware p50/p99 | < 100 / < 500 | [Z] | README.md L1313 |
| Rate Limiter p50/p99 | < 50 / < 200 | [Z] | README.md L1314 |
| Entity CRUD p50/p99 | < 5 ms / < 50 ms | [Z] | README.md L1315 |
| Query Execution (einfach) p50/p99 | < 10 ms / < 100 ms | [Z] | README.md L1316 |
| Vector Search p50/p99 | < 10 ms / < 50 ms | [Z] | README.md L1317 |
| Request Wall-Clock Timeout | 500 ms default  HTTP 504 | [I] | FE L130 |
| Congestion p99 > 500 ms  Adaptive Rate Reduction | auf 50 % | [I] | FE L383 |
| WASM Function CPU-Time Limit | 500 ms default | [Z] | ROADMAP L74 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Parse + Optimize ( 10 Collections) | 5 ms p99 | [Z] | ROADMAP L198, FE L1393 |
| Simple AQL Execution (3-Node Cluster, warm Cache) | 10 000 queries/s @ p99 < 20 ms | [Z] | ROADMAP L199, FE L1394 |
| Exact-Match Cache Lookup (10 000 Concurrent Clients) | 1 ms p99 | [Z] | ROADMAP L200, FE L1395 |
| Semantic Cache Lookup (inkl. Embedding-Similarity) | 10 ms p99 | [Z] | FE L1396 |
| JIT First-Compile Latenz | 50 ms | [Z] | FE L1397 |
| JIT Execution Speedup (Arithmetic-Heavy) | 3× vs. Interpreter | [Z] | FE L1397 |
| Federation Cost-Schätzung (5-Cluster-Plan) | 20 ms | [Z] | FE L1398 |
| Streaming Result First-Chunk | 50 ms | [Z] | ROADMAP L201, FE L1399 |
| Query Cancellation (Memory + Locks freigegeben) | innerhalb 100 ms nach Signal | [Z] | FE L1408 |
Optimizer optimize() (einfach, 1 2 Prädikate) |
0.1 5 ms | [M] | README.md L185 |
Optimizer optimize() (komplex, 10+ Prädikate) |
5 50 ms | [M] | README.md L186 |
| Simple Query Execution (1 2 Prädikate) | 1 10 ms | [M] | README.md L256 |
| Complex Query (5 10 Prädikate, Joins) | 10 100 ms | [M] | README.md L257 |
| Graph Traversal (Depth 3 5) | 50 500 ms | [M] | README.md L258 |
| Hybrid Query (Vector+Geo) | 10 50 ms | [M] | README.md L259 |
| Fan-Out Latenz (16 Shards, LAN) | 200 ms | [Z] | ROADMAP L91 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Lexer Tokenisierung | 50 MB/s / Core (ASCII) | [Z] | FE L14, L772 |
| Parser AST-Konstruktion (64 KB Query) | 10 ms | [Z] | FE L15, L773 |
| Full Round-Trip (parse + execute, 10-Table-Join, 100k Rows) | 500 ms | [Z] | FE L774 |
| LLM Command Async-Dispatch (ohne Inferenz) | 5 ms / Command | [Z] | FE L775 |
| Query Optimizer Rewrite Pass | 2 ms / 1000 AST-Nodes | [Z] | FE L776 |
| Batch NLAQL (10 Requests, mock LLM 50 ms, concurrency 4) | 150 ms Wall-Time | [I] | FE L159, L778 |
| AQL Validation Overhead | 1 ms / Generated Query | [Z] | FE L60 |
Timeout-Thread Terminierung nach executeWithTimeout() |
innerhalb timeout + 500 ms |
[Z] | FE L788 |
push() / nextToken() Overhead (ohne Modell-Generierung) |
500 ns | [Z] | ROADMAP L46 |
| Tool-Dispatch-Overhead (ohne Tool-Ausführung) | 1 ms / Step | [Z] | ROADMAP L55 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Prefetch Prediction Latenz | 100 / Call | [Z] | FE L102 |
| L3 Cache Hit-Path (RocksDB-backed) | 5 ms p99 | [Z] | FE L161 |
| Admin API Response | 5 ms unabh├ñngig von L1-Cache-Gr├Â├ƒe | [Z] | FE L163 |
| Redis-Async Peer-Discovery (libuv-backed) | non-blocking | [I] | FE L82 |
| Distributed Cache Invalidation (alle Nodes) | propagiert innerhalb 500 ms | [Z] | FUTURE_ENHANCEMENTS core L572 |
Distributed Cache get Round-Trip (Redis localhost) |
1 ms p99 | [Z] | core FE L582 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Replication Lag p99 (SEMI_SYNC, 3-Node LAN, 10k writes/s) | 50 ms | [Z] | FE L17, L841 |
| WAL-Shipping Throughput / Follower (Zstd Level 3, 10 GbE) | 500 MB/s | [Z] | FE L18, L842 |
| Vector-Clock / HLC Conflict-Detection Overhead | < 5 / Write-Op | [Z] | FE L20, L844 |
| CRDT Merge Latenz (G-Counter / LWW-Register) | 1 / Merge | [Z] | FE L845 |
| Point-in-Time Recovery WAL Replay | 200 MB/s; 100 GB in 10 min | [Z] | FE L846 |
| CDC Event Emission (Commit  Queue Enqueue) | 1 ms p99 | [Z] | FE L847 |
| Cross-Datacenter Replication Lag (ASYNC, 50 ms RTT WAN) | 200 ms p99 | [Z] | FE L848 |
| Async Mode Latenz | < 1 ms | [M] | README.md L952 |
| Semi-Sync Mode Latenz | 1 5 ms | [M] | README.md L953 |
| Sync Mode Latenz | 2 10 ms | [M] | README.md L954 |
| Tier 1 Critical SLA (SYNC, 3+ Replicas) | 10 ms | [Z] | ROADMAP L194 |
| Tier 2 Standard SLA (SEMI_SYNC, 2 Replicas) | 50 ms | [Z] | ROADMAP L194 |
| WAL Append Throughput | > 50 000 entries/s | [I] | ROADMAP L242 |
WAL readFrom 1000 Entries |
< 5 ms | [I] | ROADMAP L242 |
| WAL Serialize/Deserialize | < 2 | [I] | ROADMAP L242 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Point Read (Cache Hit) | 10 50 | [M] | ARCHITECTURE.md L189, README.md L107 |
| Point Read (Cache Miss / Disk) | 100 500 | [M] | ARCHITECTURE.md L189, README.md L675 |
| Hot-Tier (NVMe) | < 1 ms | [Z] | FE Storage |
| Warm-Tier (SATA) | ~5 ms | [Z] | FE Storage |
| Cold-Tier (S3) | ~50 ms | [Z] | FE Storage |
| Sustained Write Throughput (NVMe, 256er Batch, 4 KB avg) | 100 000 ops/s | [Z] | FE L738 |
| p99 Point-Read (Hot-Tier, Bloom-Filter enabled) | 1 ms | [Z] | FE L739 |
| Incremental Backup Throughput (NVMe, parallel SSTable) | 500 MB/s | [Z] | FE L740 |
| Streaming Ingest End-to-End Latenz | 50 ms | [Z] | FE general |
| Streaming Ingest Throughput | 1 M events/s | [Z] | FE general |
| Erasure Coding 6+3 Overhead | 50 % (vs. RAID-1 200 %) | [Z] | FE general |
| RocksDB WriteBatch Commit Latenz (Vector Add) | < 2 ms p99 | [Z] | index FE L970 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Sequence Generation Throughput (8 Writer-Threads) | 200 k/s | [I] | FE L405 ÔÇö Lock-free atomic<uint64_t> |
| Event Delivery p99 (Changefeed  WebSocket Frame) | < 20 ms | [Z] | FE L334 |
| Consumer Group Offset Commit (RocksDB Write) | < 1 ms p99 | [Z] | FE L365 |
End-to-End Latenz (Change  Kafka ack, LAN) |
< 10 ms p99 | [Z] | FE L387 |
| Compaction I/O Bandwidth Cap | 50 MB/s (konfigurierbar) | [Z] | FE L425 |
| SSE Event Delivery p99 (aktuell) | < 50 ms (Schätzung) | [M est.] | FE L461 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Cross-Shard RPC p99 (LAN, ohne Consensus) | < 5 ms | [Z] | FE L85 ÔÇö aktuell ~18 ms |
| Cross-Shard RPC aktuell (gemessen) | ~18 ms | [M] | FE L179 |
| 2PC Commit (5 Shards) aktuell | ~35 ms | [M] | FE L180 |
| 2PC Commit Ziel (5 Shards) | < 15 ms | [Z] | FE L180 |
| Percolator Commit (10 Shards) | < 20 ms p99 | [Z] | FE L104, L181 |
| Topology Change Propagation (100-Node Cluster) | 500 ms | [Z] | FE L13, L255 ÔÇö aktuell ~1.2 s |
| Topology Change aktuell (gemessen) | ~1.2 s | [M] | FE L184 |
| Anti-Entropy Scan Throughput (NVMe, 8 Workers) | > 1 GB/s / Node | [Z] | FE L141 |
| GPU Reed-Solomon Reconstruction | > 4 GB/s (NVIDIA A10) | [Z] | FE L142 |
| Lagging Replica Catch-Up (Snapshot, 10 GbE) | > 200 MB/s | [Z] | FE L162 |
replaceEndpoint() (In-Memory, kein etcd Write) |
< 1 ms | [Z] | FE L253 |
replaceEndpoint() (mit etcd Write) |
< 10 ms | [Z] | FE L253 |
NodeIdentity::loadFrom() (NVMe, ~200 Bytes) |
< 5 ms | [Z] | FE L254 |
| Shard Split Migration Read-Unavailability | 0 ms (Dual-Write) | [Z] | FE L122 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Hybrid Search (BM25 + HNSW RRF, Top-10, 10 M Docs) | 20 ms p99 | [Z] | FE L471 |
| LLM Query-Rewriter Overhead | 200 ms Added Latency p99; 0 ms wenn LLM unavailable | [Z] | FE L471 |
| Facet Counting (1 000 Werte, 100k Docs) | 5 ms | [Z] | FE L472 |
| LTR Re-Ranking (Top-100, 6-dim Linear Model) | 2 ms | [Z] | FE L473 |
| Autocomplete Suggestion (1 M-Term Dictionary) | 5 ms p99 | [Z] | FE L475 |
| BM25/FTS Query Latenz | 1 10 ms | [M] | README.md L113 |
| Vector Search Query Latenz | 1 10 ms (k=10, 1M vectors) | [M] | README.md L119 |
| Hybrid Search Query Latenz | 5 20 ms | [M] | README.md L125 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| AES-256-GCM Encrypt/Decrypt Throughput (AES-NI, 1 Core) | 1 GB/s | [Z] | FE L967, ROADMAP L130 |
| RSA-4096 Signature Verification | p99 5 ms | [Z] | FE L968 |
| Kyber-1024 Key Encapsulation | 2 000 ops/s | [Z] | FE L969, ROADMAP L132 |
| Dilithium-5 Signing | 1 000 ops/s | [Z] | FE L970, ROADMAP L133 |
| TLS 1.3 Handshake (ECDHE-AES256-GCM) | p99 10 ms | [Z] | FE L971 |
| RBAC Policy Evaluation ( 100 Roles) | p99 0.5 ms | [Z] | FE L972 |
| HSM-backed RSA-2048 Sign (SoftHSM2 Baseline) | p99 20 ms | [Z] | FE L973 |
| Audit Log Tamper-Evident Append | p99 2 ms / Entry | [Z] | FE L974, ROADMAP L136 |
| Audit Log Tamper-Evident Append (Bench 2026-04-11, post-optimierung) | ~4.07 ms Realzeit, ~0.98 ms CPU-Zeit | [M] | bench_security --benchmark_filter=BM_AuditLog_TamperEvidentAppend |
| Audit Log Batch-Append 100 (Bench 2026-04-11, post-optimierung) | ~375 ms Realzeit, ~187.5 ms CPU-Zeit | [M] | bench_security --benchmark_filter=BM_AuditLog_BatchAppend_100 |
| Encryption Overhead / Feld (256-Byte Payload) | ~5 10 | [M] | README.md L194 |
| Decryption Overhead / Feld | ~3 7 | [M] | README.md L195 |
| Key Cache Lookup (In-Memory) | ~100 ns | [M] | README.md L196 |
| Vault API Call (gecacht, 1 Std.) | ~50 100 ms | [M] | README.md L197 |
| HSM Operation (Hardware) | ~5 20 ms | [M] | README.md L198 |
| Document Insert mit Verschlüsselung | 1.4 ms (+16 % vs. plain) | [M] | README.md L859 |
| Document Query mit Verschlüsselung | 1.1 ms (+37 % vs. plain) | [M] | README.md L860 |
| Bulk Insert 1k Docs mit Verschlüsselung | 1050 ms (+23 % vs. plain) | [M] | README.md L861 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| IVM Delta-Application ( 10 000 Rows) | 50 ms | [Z] | FE L22, L32 |
| IVM Reader p99 während 10k-Row-Batch-Apply | 10 ms | [Z] | FE L209 |
| CSV Export 1 M Rows (Streaming, kein Full In-Memory) | 500 ms | [Z] | FE L81 |
CEP Engine stop() |
100 ms | [Z] | FE L104 |
CEP process() Lock-Hold-Dauer |
50 | [Z] | FE L130 |
| IsolationForest Training (1000-Punkt-Window) | 10 ms | [Z] | FE L131 |
| CEP p99 Latenz (8 Threads @ 100 kHz) | 1 ms | [Z] | FE L127 |
putInCache() / getFromCache() |
O(1) amortisiert, 1 p99 (16 Concurrent) | [Z] | FE L236 |
getCacheKey() (500-Event Trace, Hash-basiert) |
50 | [Z] | FE L237 |
| Einfache Aggregation SUM (1 M Rows) | 15 ms (66k rows/s) | [M] | README.md L1193 |
| Einfache Aggregation SUM (10 M Rows) | 142 ms (70k rows/s) | [M] | README.md L1194 |
| GROUP BY 1 Dim. (1 M Rows) | 45 ms (22k rows/s) | [M] | README.md L1195 |
| GROUP BY 1 Dim. (10 M Rows) | 425 ms (23k rows/s) | [M] | README.md L1196 |
| GROUP BY 3 Dim. (1 M Rows) | 120 ms (8.3k rows/s) | [M] | README.md L1197 |
| Window Function ROW_NUMBER (1 M Rows) | 80 ms (12.5k rows/s) | [M] | README.md L1199 |
| Window Function Moving Average (1 M Rows) | 95 ms (10.5k rows/s) | [M] | README.md L1200 |
| Complex OLAP CUBE (1 M Rows) | 350 ms (2.8k rows/s) | [M] | README.md L1201 |
| Complex OLAP ROLLUP (1 M Rows) | 280 ms (3.5k rows/s) | [M] | README.md L1202 |
| SIMD SUM (10 M Rows) | 28 ms (5.1× Speedup vs. Scalar 142 ms) | [M] | README.md L1207 |
| SIMD AVG (10 M Rows) | 35 ms (4.5× Speedup) | [M] | README.md L1208 |
| SIMD MIN/MAX (10 M Rows) | 18 ms (6.9× Speedup) | [M] | README.md L1209 |
| SIMD Complex Filter (10 M Rows) | 45 ms (4.7× Speedup) | [M] | README.md L1210 |
| JSON Export (100k Rows) | 250 ms (400k rows/s, 45 MB) | [M] | README.md L1216 |
| Fan-Out Latenz (16 Shards, LAN) | 200 ms | [Z] | ROADMAP L72 |
| Model Export ( 1 M Samples) | 500 ms | [Z] | ROADMAP L86 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Single-Point Insert p99 (Gorilla compressed) | 50 | [Z] | FE L39 |
| Gorilla on-disk compression (1000 Punkte) | 15 % raw size | [Z] | FE L39 |
| Gorilla Decode Throughput (aktuell) | ~400 MB/s | [M] | FE L153 |
| Gorilla Decode Throughput (SIMD Ziel) | > 2 GB/s | [Z] | FE L59, L153 |
| Range Scan 1 M Punkte float64 (aktuell) | ~300 ms | [M] | FE L154 |
| Range Scan 1 M Punkte float64 (Ziel) | < 50 ms p99 | [Z] | FE L60, L154 |
| Continuous Aggregate Refresh (aktuell) | ~5 s | [M] | FE L155 |
| Continuous Aggregate Refresh (Ziel, 100k inserts/s) | < 500 ms / Aggregat / Minute | [Z] | FE L77, L155 |
| Buffer-to-Storage Flush p99 | < 10 ms | [Z] | FE L114 |
| AES-256-GCM Throughput / Core (AES-NI via OpenSSL EVP) | > 1 GB/s | [Z] | FE L135 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Begin-Latenz | < 1 | [M] | README.md L130 |
| Commit-Latenz (abh├ñngig von Batch-Gr├Â├ƒe) | 100 5 ms | [M] | README.md L130 |
| Lock-Overhead / Lock-Acquire | ~5 ns (Atomics) | [M] | README.md L131 |
| Deadlock-Detection Intervall (konfigurierbar) | 100 ms | [M] | README.md L132 |
| Lock-Free Read (Fast-Path, kein Contention) | < 10 ns | [M] | README.md L820 |
| Stats Collection / Operation | < 5 ns (Atomic Increment) | [M] | README.md L819 |
| OCC Commit p50  aktuell | 1 ms | [M] | FE L872 |
| OCC Commit p99  aktuell | 10 ms | [M] | FE L872 |
| OCC Commit p50  Ziel | 100 | [Z] | FE L872 |
| OCC Commit p99  Ziel | 5 ms | [Z] | FE L873 |
| SAGA Compensation Time  aktuell | 100 ms | [M] | FE L875 |
| SAGA Compensation Time  Ziel | 20 ms | [Z] | FE L875 |
| Distributed 2PC Latenz  aktuell | 10 ms | [M] | FE L876 |
| Distributed 2PC Latenz  Ziel | 5 ms | [Z] | FE L876 |
| Batch Window (konfigurierbar) | 1 100 ms | [I] | FE L495 |
| Retry-Kosten / Versuch | ~1 ms | [M] | FE L163 |
| Deadlock-Watchdog Fallback-Timer | innerhalb 500 ms | [Z] | FE L938 |
| Conflict Detection | ~1 ms / 1000 Keys | [M] | README.md L656 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| HNSW Vector Search (1M 128-dim, k=10) CPU | 5 000 QPS | [Z] | FE L964 |
| HNSW Vector Search (1M 128-dim, k=10) GPU (RTX) | 50 000 QPS | [Z] | FE L964 |
| B-Tree Secondary Index Point Lookup (10M Keys) | < 500 p99 | [Z] | FE L966 |
| R-Tree Spatial Range Query (1M Punkte, 1 % Selectivity) | < 10 ms p99 | [Z] | FE L967 |
| HNSW CPU Brute-Force Query (1M vectors) | 10 100 ms | [M] | README.md L882 |
| HNSW CPU Query | 0.1 1 ms | [M] | README.md L883 |
| HNSW GPU (Vulkan, Batch) | 0.01 0.1 ms | [M] | README.md L884 |
| B-Tree Point Lookup (mit Cache) | 10 50 | [M] | README.md L298 |
| R-Tree Bounding Box | 1 10 ms | [M] | README.md L487 |
| R-Tree Radius Search | 1 20 ms | [M] | README.md L488 |
| Generic Loop Scan | ~1 GB/s | [M] | FE L398 |
| AVX-512 SIMD Scan (geplant) | ~50 GB/s | [Z] | FE L399 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
intersects (1M Punkte, linear) |
~2 000 ms | [M] | FE L210 |
intersects (1M Punkte, R-Tree) |
5 ms p99 | [Z] | FE L73, L210 |
| ST_BUFFER (10k Punkte @ 500 m, CPU) | 200 ms | [Z] | FE L98, L212 |
| ST_BUFFER (10k Punkte @ 500 m, A10G) | 20 ms (10× CPU) | [Z] | FE L352 |
| GPU Contains (1M Punkte, A10G) | 50 ms | [Z] | FE L213 |
| Spatial JOIN (2 × 100k Punkte, 1 km, erste 1000 Ergebnisse) | 500 ms | [Z] | FE L126 |
sampleAt (1M-Cell Grid) |
1 / Call | [Z] | FE L150 |
queryBBox (10k Cells aus 1M-Cell Grid) |
10 ms | [Z] | FE L151 |
generateHeatmap (100k Punkte, 100×100, 500 m BW) |
500 ms | [Z] | FE L152 |
| Ellipsoidal ST_Distance (1M Paare, CPU) | 500 ms | [Z] | FE L275 |
| Ellipsoidal ST_Distance (1M Paare, A10G) | 50 ms | [Z] | FE L276 |
| ST_UNION (1000 Polygon-Paare, A10G) | 10 ms | [Z] | FE L353 |
locationAtTime (100k Rows) |
1 ms | [Z] | FE L193 |
entitiesWithinDistanceAtTime (10k Entities, linear) |
50 ms | [Z] | FE L194 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| CUDA L2-Search (1M × 128-dim, RTX 3090) | < 8 ms | [Z] | FE L45, L427 |
| Cosine Search Vulkan/MoltenVK (500k × 128-dim, M2 Pro) | < 20 ms | [I] | FE L428 |
| GPU Distributed Index (100M × 128-dim, 4× A100, k=100) | < 15 ms p99 | [Z] | FE L79, L369 |
NCCL mergeTopK (worldSize=4, k=100, NVLink-3) |
< 500 | [Z] | FE L80, L432 |
| Device Probe (4-GPU System) | < 50 ms | [I] | FE L431 |
getStats() Call Latenz (Linux /proc/stat) |
< 2 ms | [I] | FE L434 |
canUseGPU() NVML-Timeout-Guard |
500 ms Timeout  false (CPU-Fallback) | [I] | FE L443 |
CPU Monitoring /proc/stat Polling-Intervall |
100 ms | [I] | FE L131 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Time-to-First-Token (512-Token Prompt, A10G) aktuell | ~350 ms (Schätzung) | [M est.] | FE L238 |
| Time-to-First-Token (512-Token Prompt, A10G) Ziel | 200 ms p99 | [Z] | FE L138, L238 |
| TTFT Bypass DeduplicationCache für Streaming | aktiviert (TTFT 200 ms) | [I] | FE L125 |
| OpenAI-Compat Adapter Round-Trip Overhead | 2 ms vs. direktem submitRequest() |
[I] | FE L165 |
| Work-Stealing Pool Task Dispatch | 50 p99 (submit  Worker Pickup) | [Z] | FE L185, L241 |
| LoRA Adapter Application | < 1 ms Overhead | [M] | llama_lora_adapter_README L163 |
| Incomplete-Stream Warning (EOF ohne Marker) | innerhalb 500 ms | [Z] | FE L86 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Fast Evaluation Mode E2E | 100 ms p99 (kein LLM-Call) | [I] | FE L17, ROADMAP L28 |
| Balanced Evaluation Mode E2E | 500 ms p99 | [I] | FE L18 |
| Thorough Evaluation Mode E2E | 2 000 ms p99 | [Z] | FE L18 |
| StreamingRetriever First-Chunk | 50 ms | [Z] | FE L767 |
| ClaimExtractor (1000-Zeichen Antwort, LLM-First) | 500 ms | [Z] | FE L769 |
| ClaimExtractor (heuristischer Fallback) | 50 ms | [Z] | FE L769 |
| RAG Query E2E (Vector Search + LLM Generation) | 50 500 ms | [M] | aql README L165 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Metrics Collection Overhead | < 1 % CPU @ 1 000 req/s | [Z] | FE L20, L1221 |
Prometheus /metrics Scrape Response |
< 50 ms p99 @ 10 000 active series | [Z] | FE L1225 |
| Span Creation + In-Process Propagation | < 5 / Span | [Z] | FE L1226 |
| OTLP Export Latenz (async, 1 000 spans/s) | < 5 ms p99 | [Z] | FE L1227 |
QueryProfiler per-Operator Timing Overhead |
< 1 / Operator Boundary | [Z] | FE L1228 |
| CPU Sampling Period | ~100 ms (1 % CPU Overhead) | [I] | README.md L630 |
| Query P99 Alert-Threshold (Default) | > 1 000 ms | [I] | ROADMAP L58 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| RDTSC/RDTSCP Measurement Overhead (x86-64) | < 1 ns / Messpunkt | [I] | FE L20, ROADMAP L87 |
| RAII Scoped Timer Overhead (1M Iterationen) | < 2 ns / Call average | [Z] | FE L809 |
| P99-Percentile-Lookup (Ring bis 1 M Samples) | < 500 ns | [Z] | FE L821 |
| GPU Metric Export Overhead (CUDA Stream / Inference) | < 100 | [Z] | FE L823 |
PMU Counter Read (perf_event_open) |
< 1 | [Z] | FE L825 |
| Query Compilation Time | < 100 ms | [Z] | FE L235 |
| No-Op Adapter | < 1 ns / Call | [M] | core README L319 |
| Spdlog Async Adapter | ~50 100 ns / Log Call | [M] | core README L320 |
| Prometheus Metrics Update | ~200 500 ns | [M] | core README L321 |
| OTEL Span Creation | ~1 5 | [M] | core README L322 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| ViT-B/32 Image Encoding (CPU) | 150 ms / Image | [Z] | AUDIT L51, ROADMAP L43 |
| ViT-B/32 CUDA Batch-64 | 20 ms ( 0.31 ms / Image) | [Z] | FE L30 |
| Text Encoding (CPU) | 5 ms p95 | [Z] | FE L56, L59 |
| Metrics Collection Overhead | 0.05 ms / Call | [Z] | FE L100 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| DOCX Extraktion (500 KB) | < 200 ms | [Z] | FE L43 |
| NDJSON Streaming Ingestion (1 GB, NVMe) | 100 MB/s | [Z] | FE L102, ROADMAP L107 |
| pHash (4 MP JPEG) | < 5 ms | [Z] | FE L121, ROADMAP L108 |
| MinHash + LSH Lookup (10 KB Text, 100k Entries) | < 1 ms | [Z] | FE L122 |
| Tesseract Init (warm, per Language Pack) | < 500 ms | [Z] | FE L143 |
| Embedding (384-dim, batch=32, CPU) | < 50 ms | [Z] | FE L161, ROADMAP L110 |
| Embedding (384-dim, batch=32, CUDA) | < 5 ms | [Z] | FE L161 |
| Ingestion + Embedding Overhead vs. Plain Ingestion | < 100 ms (Batch-amortisiert) | [Z] | FE L162 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| HTTP GET Round-Trip Overhead (vs. raw TCP) | 5 ms | [Z] | FE L69 |
| Kafka  ThemisDB E2E Latenz | 500 ms p99 | [Z] | FE L89 |
S3 ListObjectsV2 (1000 Objekte) |
100 ms | [Z] | FE L109 |
| S3 Concurrent Downloads (4 parallel, 10 Gbps) | 200 MB/s aggregate | [Z] | FE L110, L189 |
| Per-Dokument Quarantäne Retry ( 1 MB) | 10 ms | [Z] | FE L146, L190 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| JSONL Export Throughput (aktuell) | ~150 MB/s (Full Batch) | [M] | FE L107 |
| JSONL Export Throughput (Ziel) | 200 000 docs/s sustained | [Z] | FE L107 |
| Parquet Export (Arrow Path, uncompressed) | 500 MB/s | [Z] | FE L109 |
| Retry Initial Delay (konfigurierbar, Default) | 500 ms (doubles each retry) | [I] | README.md L193 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Vector Search (k=10, 1M Vectors) | 1 10 ms | [M] | README.md L799 |
insert_vector() HNSW |
1 10 ms | [M] | README.md L798 |
| Graph Traversal Depth 5 (1M Nodes) | < 100 ms | [Z] | FE L860 |
shortest_path() |
10 500 ms | [M] | README.md L800 |
execute_query() |
1 1000 ms | [M] | README.md L797 |
find_documents() |
1 100 ms | [M] | README.md L801 |
| Connection Pool Acquire | < 1 ms | [Z] | FE L866 |
| Streaming Result Throughput | 100 MB/s | [Z] | FE L864 |
| Metric Export | < 100 | [Z] | FE L870 |
| Schema-Operations (Index-Erstellung) | < 100 ms | [Z] | FE L871 |
| Connection State Check Overhead | ~1 ns | [M] | README.md L391 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Algorithm Selection ( 10M Nodes) | < 1 ms p99 | [Z] | FE L1122 |
| Plan Cache Lookup (inkl. Fingerprint-Vergleich) | < 100 p99 | [Z] | FE L1122 |
| Subgraph Isomorphism (100-Node Pattern, 1M-Node Graph) | < 500 ms p95 | [Z] | FE L1125 |
Audit Trail appendAudit() Overhead |
< 1 / Mutation (Bounded Ring Buffer) | [Z] | FE L1079 |
ChangeFeed::recordEvent() (RocksDB single put) |
< 5 / Event | [Z] | FE L1080 |
| Background Scheduler Wake-Up Jitter | < 50 ms | [Z] | FE L1082 |
| Observierter BFS (10k-Node Graph) | ~8 ms | [M] | FE L146 |
| Statistics Collection | 10 100 ms (gecacht nach erstem Aufruf) | [M] | README.md L803 |
| Plan Generation (einfach) | 0.1 5 ms | [M] | README.md L804 |
| Complex Queries (Pattern Matching) | 5 50 ms | [M] | README.md L805 |
| Plan Cache Lookup Hit Rate | 80 90 % | [M] | README.md L806 |
| Single Constraint Check | ~0.1 | [M] | README.md L820 |
| Path Validation (10 Constraints) | ~1 / Path | [M] | README.md L821 |
findConstrainedPaths (1000 explored, 10 valid) |
10 100 ms | [M] | README.md L822 |
| ] | README.md L797 | ||
find_documents() |
1–100 ms | [M] | README.md L801 |
| Connection Pool Acquire | < 1 ms | [Z] | FE L866 |
| Streaming Result Throughput | 100 MB/s | [Z] | FE L864 |
| Metric Export | < 100 µs | [Z] | FE L870 |
| ======= | |||
| Vector Search (k=10, 1M Vectors) | 1 10 ms | [M] | README.md L799 |
insert_vector() HNSW |
1 10 ms | [M] | README.md L798 |
| Graph Traversal Depth 5 (1M Nodes) | < 100 ms | [Z] | FE L860 |
shortest_path() |
10 500 ms | [M] | README.md L800 |
execute_query() |
1 1000 ms | [M] | README.md L797 |
find_documents() |
1 100 ms | [M] | README.md L801 |
| Connection Pool Acquire | < 1 ms | [Z] | FE L866 |
| Streaming Result Throughput | 100 MB/s | [Z] | FE L864 |
| Metric Export | < 100 | [Z] | FE L870 |
Stashed changes | Schema-Operations (Index-Erstellung) | < 100 ms | [Z] | FE L871 | | Connection State Check Overhead | ~1 ns | [M] | README.md L391 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Algorithm Selection (≤ 10M Nodes) | < 1 ms p99 | [Z] | FE L1122 |
| Plan Cache Lookup (inkl. Fingerprint-Vergleich) | < 100 µs p99 | [Z] | FE L1122 |
| Subgraph Isomorphism (100-Node Pattern, 1M-Node Graph) | < 500 ms p95 | [Z] | FE L1125 |
Audit Trail appendAudit() Overhead |
< 1 µs / Mutation (Bounded Ring Buffer) | [Z] | FE L1079 |
ChangeFeed::recordEvent() (RocksDB single put) |
< 5 µs / Event | [Z] | FE L1080 |
| Background Scheduler Wake-Up Jitter | < 50 ms | [Z] | FE L1082 |
| Observierter BFS (10k-Node Graph) | ~8 ms | [M] | FE L146 |
| Statistics Collection | 10–100 ms (gecacht nach erstem Aufruf) | [M] | README.md L803 |
| Plan Generation (einfach) | 0.1–5 ms | [M] | README.md L804 |
| Complex Queries (Pattern Matching) | 5–50 ms | [M] | README.md L805 |
| Plan Cache Lookup Hit Rate | 80–90 % | [M] | README.md L806 |
| Single Constraint Check | ~0.1 µs | [M] | README.md L820 |
| Path Validation (10 Constraints) | ~1 µs / Path | [M] | README.md L821 |
findConstrainedPaths (1000 explored, 10 valid) |
10–100 ms | [M] | README.md L822 |
| Algorithm Selection ( 10M Nodes) | < 1 ms p99 | [Z] | FE L1122 |
| Plan Cache Lookup (inkl. Fingerprint-Vergleich) | < 100 p99 | [Z] | FE L1122 |
| Subgraph Isomorphism (100-Node Pattern, 1M-Node Graph) | < 500 ms p95 | [Z] | FE L1125 |
Audit Trail appendAudit() Overhead |
< 1 / Mutation (Bounded Ring Buffer) | [Z] | FE L1079 |
ChangeFeed::recordEvent() (RocksDB single put) |
< 5 / Event | [Z] | FE L1080 |
| Background Scheduler Wake-Up Jitter | < 50 ms | [Z] | FE L1082 |
| Observierter BFS (10k-Node Graph) | ~8 ms | [M] | FE L146 |
| Statistics Collection | 10 100 ms (gecacht nach erstem Aufruf) | [M] | README.md L803 |
| Plan Generation (einfach) | 0.1 5 ms | [M] | README.md L804 |
| Complex Queries (Pattern Matching) | 5 50 ms | [M] | README.md L805 |
| Plan Cache Lookup Hit Rate | 80 90 % | [M] | README.md L806 |
| Single Constraint Check | ~0.1 | [M] | README.md L820 |
| Path Validation (10 Constraints) | ~1 / Path | [M] | README.md L821 |
findConstrainedPaths (1000 explored, 10 valid) |
10 100 ms | [M] | README.md L822 |
| Vectors) | 1–10 ms | [M] | README.md L799 |
insert_vector() HNSW |
1–10 ms | [M] | README.md L798 |
| Graph Traversal Depth 5 (1M Nodes) | < 100 ms | [Z] | FE L860 |
shortest_path() |
10–500 ms | [M] | README.md L800 |
execute_query() |
1–1000 ms | [M] | README.md L797 |
find_documents() |
1–100 ms | [M] | README.md L801 |
| Connection Pool Acquire | < 1 ms | [Z] | FE L866 |
| Streaming Result Throughput | 100 MB/s | [Z] | FE L864 |
| Metric Export | < 100 µs | [Z] | FE L870 |
| Schema-Operations (Index-Erstellung) | < 100 ms | [Z] | FE L871 |
| Connection State Check Overhead | ~1 ns | [M] | README.md L391 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Algorithm Selection (≤ 10M Nodes) | < 1 ms p99 | [Z] | FE L1122 |
| Plan Cache Lookup (inkl. Fingerprint-Vergleich) | < 100 µs p99 | [Z] | FE L1122 |
| Subgraph Isomorphism (100-Node Pattern, 1M-Node Graph) | < 500 ms p95 | [Z] | FE L1125 |
Audit Trail appendAudit() Overhead |
< 1 µs / Mutation (Bounded Ring Buffer) | [Z] | FE L1079 |
ChangeFeed::recordEvent() (RocksDB single put) |
< 5 µs / Event | [Z] | FE L1080 |
| Background Scheduler Wake-Up Jitter | < 50 ms | [Z] | FE L1082 |
| Observierter BFS (10k-Node Graph) | ~8 ms | [M] | FE L146 |
| Statistics Collection | 10–100 ms (gecacht nach erstem Aufruf) | [M] | README.md L803 |
| Plan Generation (einfach) | 0.1–5 ms | [M] | README.md L804 |
| Complex Queries (Pattern Matching) | 5–50 ms | [M] | README.md L805 |
| Plan Cache Lookup Hit Rate | 80–90 % | [M] | README.md L806 |
| Single Constraint Check | ~0.1 µs | [M] | README.md L820 |
| Path Validation (10 Constraints) | ~1 µs / Path | [M] | README.md L821 |
findConstrainedPaths (1000 explored, 10 valid) |
10–100 ms | [M] | README.md L822 |
) | Status | |-----------|------|-----------------|----------------------------|--------|
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Vector Search (k=10, 1M Vectors) | 1 10 ms | [M] | README.md L799 |
insert_vector() HNSW |
1 10 ms | [M] | README.md L798 |
| Graph Traversal Depth 5 (1M Nodes) | < 100 ms | [Z] | FE L860 |
shortest_path() |
10 500 ms | [M] | README.md L800 |
execute_query() |
1 1000 ms | [M] | README.md L797 |
find_documents() |
1 100 ms | [M] | README.md L801 |
| Connection Pool Acquire | < 1 ms | [Z] | FE L866 |
| Streaming Result Throughput | 100 MB/s | [Z] | FE L864 |
| Metric Export | < 100 | [Z] | FE L870 |
| Schema-Operations (Index-Erstellung) | < 100 ms | [Z] | FE L871 |
| Connection State Check Overhead | ~1 ns | [M] | README.md L391 |
| Schnittstelle | Ziel/Messwert | Typ | Quelle |
|---|---|---|---|
| Algorithm Selection ( 10M Nodes) | < 1 ms p99 | [Z] | FE L1122 |
| Plan Cache Lookup (inkl. Fingerprint-Vergleich) | < 100 p99 | [Z] | FE L1122 |
| Subgraph Isomorphism (100-Node Pattern, 1M-Node Graph) | < 500 ms p95 | [Z] | FE L1125 |
Audit Trail appendAudit() Overhead |
< 1 / Mutation (Bounded Ring Buffer) | [Z] | FE L1079 |
ChangeFeed::recordEvent() (RocksDB single put) |
< 5 / Event | [Z] | FE L1080 |
| Background Scheduler Wake-Up Jitter | < 50 ms | [Z] | FE L1082 |
| Observierter BFS (10k-Node Graph) | ~8 ms | [M] | FE L146 |
| Statistics Collection | 10 100 ms (gecacht nach erstem Aufruf) | [M] | README.md L803 |
| Plan Generation (einfach) | 0.1 5 ms | [M] | README.md L804 |
| Complex Queries (Pattern Matching) | 5 50 ms | [M] | README.md L805 |
| Plan Cache Lookup Hit Rate | 80 90 % | [M] | README.md L806 |
| Single Constraint Check | ~0.1 | [M] | README.md L820 |
| Path Validation (10 Constraints) | ~1 / Path | [M] | README.md L821 |
findConstrainedPaths (1000 explored, 10 valid) |
10 100 ms | [M] | README.md L822 |