mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from concurrent.futures import ProcessPoolExecutor
|
|
import os
|
|
|
|
from rich.console import Console
|
|
from rich.table import Table
|
|
from rich.panel import Panel
|
|
from rich.text import Text
|
|
|
|
from metrics.utils import run_benchmark, BenchmarkResult
|
|
from .registry import Benchmarks, Benchmark
|
|
|
|
|
|
def main():
|
|
console = Console()
|
|
all_benchmarks: list[Benchmark] = Benchmarks.get_benchmarks()
|
|
|
|
workers = os.cpu_count() or 1
|
|
with ProcessPoolExecutor(max_workers=workers) as executor:
|
|
results = executor.map(run_benchmark, all_benchmarks)
|
|
|
|
type_paired_benchmarks: dict[str, list[BenchmarkResult]] = {}
|
|
|
|
for result in results:
|
|
type_paired_benchmarks.setdefault(result.type_, []).append(result)
|
|
|
|
for type_, benchmarks in type_paired_benchmarks.items():
|
|
header_text = Text(f"TYPE: {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")
|
|
|
|
for benchmark in benchmarks:
|
|
table.add_row(
|
|
benchmark.name,
|
|
benchmark.description,
|
|
str(benchmark.iterations),
|
|
str(benchmark.avg_time)
|
|
)
|
|
|
|
console.print(table)
|
|
console.print()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|