Feature: Detaillierte Worker-Pool Performance-Metriken mit psutil
Neue Metrik-Erfassung für Saxon- und FOP-Worker-Pools: - Kompilierungszeit der Java-Worker-Klassen - Worker-Startzeiten (Summe + Durchschnitt pro Worker) - RAM-Verbrauch vor/nach Transformation (Summe + Durchschnitt) - Automatische Berechnung der RAM-Zunahme in MB und Prozent Technische Details: - Neue WorkerPoolMetrics-Datenklasse in worker_metrics.py - RAM-Messung via psutil (v7.2.1, neu hinzugefügt) - Metriken für beide Saxon-Varianten (JAXP + s9api) - WorkerPoolMetricsDialog mit Tab-basierter UI - Menüeintrag "Projekt → Worker-Pool-Metriken" Metriken werden automatisch erfasst: - Bei Worker-Pool-Initialisierung (Kompilierung + Start) - Vor erster Transformation (RAM-Baseline) - Nach allen Transformationen (RAM-Endwert) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
"""
|
||||
Worker Pool Performance-Metriken.
|
||||
|
||||
Gemeinsame Datenstrukturen für Performance- und Ressourcenverbrauch-Metriken
|
||||
der Worker-Pools (Saxon, FOP).
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
|
||||
@dataclass
|
||||
class WorkerPoolMetrics:
|
||||
"""
|
||||
Metriken für Worker-Pool Performance und Ressourcenverbrauch.
|
||||
"""
|
||||
|
||||
# Kompilierungszeit
|
||||
compilation_time_seconds: float = 0.0
|
||||
|
||||
# Worker-Start-Zeiten
|
||||
worker_start_times: list[float] = field(default_factory=list)
|
||||
total_worker_start_time_seconds: float = 0.0
|
||||
average_worker_start_time_seconds: float = 0.0
|
||||
|
||||
# RAM-Verbrauch (in MB)
|
||||
ram_before_transform_mb_per_worker: list[float] = field(default_factory=list)
|
||||
ram_after_transform_mb_per_worker: list[float] = field(default_factory=list)
|
||||
total_ram_before_mb: float = 0.0
|
||||
total_ram_after_mb: float = 0.0
|
||||
average_ram_before_mb: float = 0.0
|
||||
average_ram_after_mb: float = 0.0
|
||||
|
||||
# XSL-Kompilierungszeiten (nur für Saxon)
|
||||
xsl_compilation_times: list[float] = field(default_factory=list)
|
||||
total_xsl_compilation_time_seconds: float = 0.0
|
||||
average_xsl_compilation_time_seconds: float = 0.0
|
||||
|
||||
def calculate_aggregates(self):
|
||||
"""Berechnet aggregierte Werte (Summen, Durchschnitte)."""
|
||||
# Worker-Start-Zeiten
|
||||
if self.worker_start_times:
|
||||
self.total_worker_start_time_seconds = sum(self.worker_start_times)
|
||||
self.average_worker_start_time_seconds = self.total_worker_start_time_seconds / len(
|
||||
self.worker_start_times
|
||||
)
|
||||
|
||||
# RAM vor Transformation
|
||||
if self.ram_before_transform_mb_per_worker:
|
||||
self.total_ram_before_mb = sum(self.ram_before_transform_mb_per_worker)
|
||||
self.average_ram_before_mb = self.total_ram_before_mb / len(self.ram_before_transform_mb_per_worker)
|
||||
|
||||
# RAM nach Transformation
|
||||
if self.ram_after_transform_mb_per_worker:
|
||||
self.total_ram_after_mb = sum(self.ram_after_transform_mb_per_worker)
|
||||
self.average_ram_after_mb = self.total_ram_after_mb / len(self.ram_after_transform_mb_per_worker)
|
||||
|
||||
# XSL-Kompilierungszeiten
|
||||
if self.xsl_compilation_times:
|
||||
self.total_xsl_compilation_time_seconds = sum(self.xsl_compilation_times)
|
||||
self.average_xsl_compilation_time_seconds = self.total_xsl_compilation_time_seconds / len(
|
||||
self.xsl_compilation_times
|
||||
)
|
||||
Reference in New Issue
Block a user