mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
78 lines
3.1 KiB
Python
78 lines
3.1 KiB
Python
import platform
|
|
import cpuinfo
|
|
|
|
from rich.console import Console
|
|
from rich.panel import Panel
|
|
from rich.table import Table
|
|
from rich.text import Text
|
|
|
|
from argenta.command.models import Command
|
|
from argenta.response import Response
|
|
from argenta.router import Router
|
|
from .benchmarks.core.models import BenchmarkGroupResult
|
|
from .benchmarks.entity import benchmarks as registered_benchmarks
|
|
from .utils import get_kernel_version, get_gpu_info
|
|
|
|
console = Console()
|
|
router = Router(title="Metrics commands:")
|
|
|
|
|
|
@router.command(Command("all-print", description="Print all benchmarks results"))
|
|
def all_print_handler(_: Response) -> None:
|
|
cpu_info = cpuinfo.get_cpu_info()
|
|
gpu_info = get_gpu_info()
|
|
os_info = get_kernel_version()
|
|
|
|
table = Table(show_header=True, header_style="bold cyan", border_style="blue", show_lines=True)
|
|
table.add_column("Parameter", style="green")
|
|
table.add_column("Value", style="yellow")
|
|
|
|
table.add_row("OS", platform.system())
|
|
table.add_row("OS Name", os_info['product_name'])
|
|
table.add_row("OS Kernel Version", os_info['kernel_version'])
|
|
table.add_row("Architecture", cpu_info['arch'])
|
|
table.add_row("CPU", cpu_info['brand_raw'])
|
|
table.add_row("GPU", gpu_info)
|
|
table.add_row("Python Version", cpu_info['python_version'])
|
|
table.add_row("Python Implementation", platform.python_implementation())
|
|
|
|
header_text = Text("SYSTEM INFO", style="bold magenta")
|
|
console.print(Panel(header_text, expand=False, border_style="magenta"))
|
|
console.print(table, end="\n\n")
|
|
|
|
type_grouped_benchmarks: list[BenchmarkGroupResult] = registered_benchmarks.run_benchmarks_grouped_by_type()
|
|
|
|
for results in type_grouped_benchmarks:
|
|
header_text = Text(f"TYPE: {results.type_.upper()}", style="bold magenta")
|
|
console.print(Panel(header_text, expand=False, border_style="magenta"))
|
|
|
|
table = Table(show_header=True, header_style="bold cyan", border_style="blue", show_lines=True)
|
|
table.add_column("Name", style="green")
|
|
table.add_column("Description", style="dim")
|
|
table.add_column("Iterations", justify="right")
|
|
table.add_column("Avg Time (ms)", justify="right", style="bold yellow")
|
|
table.add_column("Median Time (ms)", justify="right", style="bold yellow")
|
|
table.add_column("Stdev (ms)", justify="right", style="bold yellow")
|
|
|
|
for benchmark in results.benchmark_results:
|
|
table.add_row(
|
|
benchmark.name,
|
|
benchmark.description,
|
|
str(benchmark.iterations),
|
|
str(benchmark.avg_time),
|
|
str(benchmark.median_time),
|
|
str(benchmark.std_dev),
|
|
)
|
|
|
|
console.print(table)
|
|
|
|
|
|
@router.command(Command("release-generate", description="Generate release report"))
|
|
def release_generate_handler(_: Response) -> None:
|
|
console.print("[yellow]Release report generation not implemented yet[/yellow]")
|
|
|
|
|
|
@router.command(Command("diagrams-generate", description="Generate diagrams"))
|
|
def diagrams_generate_handler(_: Response) -> None:
|
|
console.print("[yellow]Diagrams generation not implemented yet[/yellow]")
|