sec_interp.core.performance_metrics module

Performance metrics module for SecInterp plugin.

This module provides tools for tracking performance and resource usage across the plugin’s operations.

class sec_interp.core.performance_metrics.MetricsCollector

Bases: object

Collects and aggregates performance metrics.

timings

Dictionary mapping operation names to durations.

counts

Dictionary mapping metric names to integer counts.

metadata

Dictionary of additional context and metadata.

Initialize empty metrics collection.

__init__()

Initialize empty metrics collection.

record_timing(operation: str, duration: float) None

Record duration of an operation.

Parameters:
  • operation – Name of the operation

  • duration – Duration in seconds

record_count(metric: str, count: int) None

Record a count metric (e.g. number of points).

Parameters:
  • metric – Name of the metric

  • count – Count value

add_metadata(key: str, value: Any) None

Add metadata to the metrics collection.

Parameters:
  • key – Metadata key

  • value – Metadata value

get_summary() dict[str, Any]

Get summary of collected metrics.

Returns:

A dictionary with all collected metrics including total duration.

clear() None

Clear all collected metrics.

class sec_interp.core.performance_metrics.PerformanceTimer(operation_name: str, collector: MetricsCollector | None = None, logger_func: Any | None = None)

Bases: object

Context manager for timing specific operations.

Initialize timer.

Parameters:
  • operation_name – Name of operation to measure

  • collector – Optional metrics collector to record into

  • logger_func – Optional logger function for immediate logging

__init__(operation_name: str, collector: MetricsCollector | None = None, logger_func: Any | None = None)

Initialize timer.

Parameters:
  • operation_name – Name of operation to measure

  • collector – Optional metrics collector to record into

  • logger_func – Optional logger function for immediate logging

__enter__()

Start the timer.

Returns:

The timer instance

Return type:

self

__exit__(exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: Any | None) None

Stop the timer and record/log validity.

Parameters:
  • exc_type – Exception type if raised

  • exc_val – Exception value if raised

  • exc_tb – Exception traceback if raised

sec_interp.core.performance_metrics.format_duration(seconds: float) str

Format duration in human readable format.

Parameters:

seconds – Duration in seconds.

Returns:

Formatted string (e.g. “1.2s”, “150ms”, “100µs”).

class sec_interp.core.performance_metrics.PerformanceMonitor(log_file='performance.log')

Bases: object

Performance monitoring using only Python standard library.

Tracks duration and memory usage of specific operations.

Initialize monitor and setup logging.

Parameters:

log_file – Path to the performance log file.

__init__(log_file='performance.log')

Initialize monitor and setup logging.

Parameters:

log_file – Path to the performance log file.

measure_operation(operation_name: str, **metadata: Any) Generator[None, None, None]

Context manager to measure operation performance (time and memory).

Parameters:
  • operation_name – Human-readable name of the operation.

  • **metadata – Additional context for logging.

get_operation_stats(operation_name: str) dict[str, Any] | None

Calculate statistics for multiple runs of an operation.

Parameters:

operation_name – Name of the operation to analyze.

Returns:

Dictionary with mean/min/max duration and memory usage.

sec_interp.core.performance_metrics.performance_monitor(func: Callable) Callable

Automatically monitor function performance.

Wraps the function call with a PerformanceMonitor measurement.