Module

utils.performance_report

Performance metrics reporting and analysis.

Reads collected metrics from .bengal/metrics/ and provides analysis, visualization, and trend detection.

Classes

BuildMetric dataclass
Single build metric record.
5

Single build metric record.

Attributes

Name Type Description
timestamp str
total_pages int
build_time_ms float
memory_rss_mb float
memory_heap_mb float
memory_peak_mb float
parallel bool
incremental bool
skipped bool
discovery_time_ms float
taxonomy_time_ms float
rendering_time_ms float
assets_time_ms float
postprocess_time_ms float

Methods 5

build_time_s property
Build time in seconds.
float
def build_time_s(self) -> float

Build time in seconds.

Returns

float

pages_per_second property
Throughput in pages/second.
float
def pages_per_second(self) -> float

Throughput in pages/second.

Returns

float

memory_per_page_mb property
Memory per page in MB.
float
def memory_per_page_mb(self) -> float

Memory per page in MB.

Returns

float

datetime property
Parse timestamp to datetime.
datetime
def datetime(self) -> datetime

Parse timestamp to datetime.

Returns

datetime

from_dict classmethod
Create from dictionary.
1 BuildMetric
def from_dict(cls, data: dict[str, Any]) -> BuildMetric

Create from dictionary.

Parameters 1
data dict[str, Any]
Returns

BuildMetric

PerformanceReport
Generates performance reports from collected metrics. Usage: report = PerformanceReport() …
9

Generates performance reports from collected metrics.

Usage:

report = PerformanceReport()
report.show(last=10, format='table')

Methods 3

load_metrics
Load metrics from history file.
1 list[BuildMetric]
def load_metrics(self, last: int | None = None) -> list[BuildMetric]

Load metrics from history file.

Parameters 1
last int | None

Number of recent builds to load (None = all)

Returns

list[BuildMetric]

List of BuildMetric objects, most recent first

show
Show performance report.
2 None
def show(self, last: int = 10, format: str = 'table') -> None

Show performance report.

Parameters 2
last int

Number of recent builds to show

format str

Output format ('table', 'json', 'summary')

compare
Compare two builds.
2 None
def compare(self, build1_idx: int = 0, build2_idx: int = 1) -> None

Compare two builds.

Parameters 2
build1_idx int

Index of first build (0 = latest)

build2_idx int

Index of second build

Internal Methods 6
__init__
Initialize report generator.
1 None
def __init__(self, metrics_dir: Path | None = None)

Initialize report generator.

Parameters 1
metrics_dir Path | None

Directory containing metrics (default: .bengal/metrics)

_print_table
Print as ASCII table.
1 None
def _print_table(self, metrics: list[BuildMetric]) -> None

Print as ASCII table.

Parameters 1
metrics list[BuildMetric]
_print_trends
Print trend analysis.
1 None
def _print_trends(self, metrics: list[BuildMetric]) -> None

Print trend analysis.

Parameters 1
metrics list[BuildMetric]
_print_json
Print as JSON array.
1 None
def _print_json(self, metrics: list[BuildMetric]) -> None

Print as JSON array.

Parameters 1
metrics list[BuildMetric]
_print_summary
Print summary statistics.
1 None
def _print_summary(self, metrics: list[BuildMetric]) -> None

Print summary statistics.

Parameters 1
metrics list[BuildMetric]
_compare_metric
Print comparison row.
5 None
def _compare_metric(self, name: str, val1: Any, val2: Any, num1: float | None = None, num2: float | None = None) -> None

Print comparison row.

Parameters 5
name str
val1 Any
val2 Any
num1 float | None
num2 float | None