feat(algorithms): add live metrics to algorithm pages

Each algorithm page shows its numbers with app-metrics.
FpsCounter publishes a rate every 500 ms, not every frame.
Fractal 2D reset now also resets the zoom slider.
This commit is contained in:
lobo committed 2026-10-21 14:35:15 +02:00
1 parent 4b19245c6c
commit 833e1ec8dc
39 files changed
+543 -79

No files matched your search

+22 -1
View File
@@ -533,7 +533,7 @@
"DISCLAIMER_4": "Zusätzlich gibt es fast immer einen Time-Space Trade-off (Zeit-Speicher-Kompromiss): Algorithmen, die extrem schnell sind (wie Merge Sort), benötigen oft viel zusätzlichen Arbeitsspeicher. Algorithmen, die direkt im vorhandenen Speicher arbeiten (wie Heap Sort), sparen Platz, sind aber manchmal komplexer oder minimal langsamer. Es gibt also keine \"One-Size-Fits-All\"-Lösung."
},
"HOW_IT_WORKS": {
"INTRO": "Jeder Algorithmus läuft zuerst komplett durch und legt bei jedem Vergleich und jedem Tausch eine Kopie des Arrays (Snapshot) in eine Liste. Die Animation spielt die Snapshots danach mit 100 ms pro Schritt ab. Die Rechenzeit ist die Zeit für den Durchlauf samt Kopien, nicht die Animation.",
"INTRO": "Jeder Algorithmus läuft zuerst komplett durch und legt bei jedem Vergleich und jedem Tausch eine Kopie des Arrays (Snapshot) in eine Liste. Die Animation spielt die Snapshots danach mit 100 ms pro Schritt ab. Die Rechenzeit ist die Zeit für den Durchlauf samt Kopien, nicht die Animation. Vergleiche und Schreibzugriffe zählen während der Animation hoch.",
"ITEM_1": "Bubble Sort und Cocktail Sort: O(n²) Vergleiche, in-place. Cocktail Sort wechselt pro Durchlauf die Richtung und stoppt, sobald ein Durchlauf nichts mehr tauscht.",
"ITEM_2": "Quick Sort: Lomuto-Partition mit dem letzten Element als Pivot, rekursiv. Durchschnitt O(n log n), schlechtester Fall O(n²), zum Beispiel bei schon sortierten Daten.",
"ITEM_3": "Heap Sort: baut einen Max-Heap im Array auf (heapify von der Mitte nach vorn) und tauscht die Wurzel ans Ende. Immer O(n log n), kein Zusatzspeicher.",
@@ -885,5 +885,26 @@
"TITLE": "Seite nicht gefunden – Andreas Dahm",
"DESCRIPTION": "Die angeforderte Seite konnte nicht gefunden werden."
}
},
"METRICS": {
"FPS": "Bilder/s",
"BACKEND": "Backend",
"STEP_TIME": "Rechenzeit pro Generation",
"GENERATION": "Generation",
"GENERATIONS_PER_SECOND": "Generationen/s",
"COMPARISONS": "Vergleiche",
"WRITES": "Schreibzugriffe",
"REGIONS": "Regionen",
"BORDERS": "Grenzen",
"ATTEMPTS": "Farbversuche (Backtracking)",
"SAMPLES": "Abtastpunkte",
"ZOOM": "Zoom",
"MAX_ITERATIONS": "Max. Iterationen",
"RAY_STEPS": "Max. Strahlschritte",
"TIME_STEP": "Zeitschritt dt",
"PARTICLES": "Partikel",
"CONSTRAINTS": "Constraints",
"PHASES": "Phasen",
"SUBSTEPS": "Substeps pro Frame"
}
}