graph LR
User_Interface["User Interface"]
Benchmarking_Core["Benchmarking Core"]
Data_Management["Data Management"]
Visualization_Engine["Visualization Engine"]
User_Interface -- "initiates" --> Benchmarking_Core
Benchmarking_Core -- "sends raw performance data to" --> Data_Management
Data_Management -- "provides processed data to" --> Visualization_Engine
Visualization_Engine -- "returns generated plots to" --> User_Interface
User_Interface -- "requests plot generation from" --> Visualization_Engine
click User_Interface href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/perfplot/User_Interface.md" "Details"
click Benchmarking_Core href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/perfplot/Benchmarking_Core.md" "Details"
click Visualization_Engine href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/perfplot/Visualization_Engine.md" "Details"
The perfplot library implements a clear pipeline architecture for performance benchmarking and visualization. The User Interface acts as the system's facade, initiating the benchmarking process by engaging the Benchmarking Core. This core component executes and times user-defined code, forwarding the raw performance metrics to Data Management for structured storage. Subsequently, the Visualization Engine retrieves this organized data to generate insightful plots, which are then presented back to the User Interface for display or saving. This design ensures a modular and efficient flow, from code execution and data collection to processing and final visual output, making it ideal for diagrammatic representation where each component's distinct role and interaction pathways are clearly delineated.
User Interface [Expand]
Serves as the public API and orchestrates the entire benchmarking workflow, handling user input and managing the final output (displaying plots, saving files).
Related Classes/Methods:
Benchmarking Core [Expand]
Responsible for the precise execution and timing of user-provided functions (kernels) across different input sizes, managing the setup and execution phases.
Related Classes/Methods:
Collects, structures, and manages the raw performance data generated by the Benchmarking Core, storing results in an organized manner for subsequent analysis and visualization.
Related Classes/Methods:
Visualization Engine [Expand]
Transforms the processed benchmark data into meaningful visual representations, primarily line plots, handling rendering logic, axis scaling, and plot aesthetics.
Related Classes/Methods: