Files
cleveragents-core/benchmarks/actor_examples_load_bench.py
T
aditya d144c4e5c4 test(actor): add ASV benchmarks for actor examples loading
- Measure file loading throughput for all 5 example YAML files
- Benchmark complex hierarchical graph parsing performance
2026-02-18 10:49:26 +00:00

106 lines
3.6 KiB
Python

"""ASV benchmarks for Actor YAML examples loading throughput.
Measures the performance of:
- Loading example YAML files from disk
- Validating real-world actor configurations
- Parsing complex hierarchical graphs
- End-to-end file-to-schema pipeline throughput
"""
from __future__ import annotations
import importlib
import sys
from pathlib import Path
# Ensure the local *source* tree is importable
_SRC = str(Path(__file__).resolve().parents[1] / "src")
if _SRC not in sys.path:
sys.path.insert(0, _SRC)
# Force-reload the top-level package
import cleveragents # noqa: E402
importlib.reload(cleveragents)
from cleveragents.actor.schema import ActorConfigSchema # noqa: E402
# Example file paths relative to project root
_EXAMPLES_DIR = Path(__file__).resolve().parents[1] / "examples" / "actors"
_SIMPLE_LLM = _EXAMPLES_DIR / "simple_llm.yaml"
_LLM_WITH_TOOLS = _EXAMPLES_DIR / "llm_with_tools.yaml"
_TOOL_COLLECTION = _EXAMPLES_DIR / "tool_collection.yaml"
_SIMPLE_GRAPH = _EXAMPLES_DIR / "simple_graph.yaml"
_GRAPH_WORKFLOW = _EXAMPLES_DIR / "graph_workflow.yaml"
class TimeActorExamplesSimpleLLM:
"""Benchmark loading simple_llm.yaml example."""
def time_load_simple_llm(self) -> None:
"""Time loading and validating simple_llm.yaml."""
ActorConfigSchema.from_yaml_file(str(_SIMPLE_LLM))
class TimeActorExamplesLLMWithTools:
"""Benchmark loading llm_with_tools.yaml example."""
def time_load_llm_with_tools(self) -> None:
"""Time loading and validating llm_with_tools.yaml (strategist pattern)."""
ActorConfigSchema.from_yaml_file(str(_LLM_WITH_TOOLS))
class TimeActorExamplesToolCollection:
"""Benchmark loading tool_collection.yaml example."""
def time_load_tool_collection(self) -> None:
"""Time loading and validating tool_collection.yaml."""
ActorConfigSchema.from_yaml_file(str(_TOOL_COLLECTION))
class TimeActorExamplesSimpleGraph:
"""Benchmark loading simple_graph.yaml example."""
def time_load_simple_graph(self) -> None:
"""Time loading and validating simple_graph.yaml."""
ActorConfigSchema.from_yaml_file(str(_SIMPLE_GRAPH))
class TimeActorExamplesGraphWorkflow:
"""Benchmark loading graph_workflow.yaml example."""
def time_load_graph_workflow(self) -> None:
"""Time loading and validating graph_workflow.yaml (hierarchical pattern)."""
ActorConfigSchema.from_yaml_file(str(_GRAPH_WORKFLOW))
class TimeActorExamplesAllFiles:
"""Benchmark loading all example files sequentially."""
def time_load_all_examples(self) -> None:
"""Time loading all 5 example YAML files in sequence."""
ActorConfigSchema.from_yaml_file(str(_SIMPLE_LLM))
ActorConfigSchema.from_yaml_file(str(_LLM_WITH_TOOLS))
ActorConfigSchema.from_yaml_file(str(_TOOL_COLLECTION))
ActorConfigSchema.from_yaml_file(str(_SIMPLE_GRAPH))
ActorConfigSchema.from_yaml_file(str(_GRAPH_WORKFLOW))
class TimeActorExamplesReload:
"""Benchmark repeated loading of the same file."""
def time_reload_complex_example(self) -> None:
"""Time loading graph_workflow.yaml multiple times (cache behavior)."""
for _ in range(5):
ActorConfigSchema.from_yaml_file(str(_GRAPH_WORKFLOW))
# Module-level metadata for ASV
time_simple_llm = TimeActorExamplesSimpleLLM()
time_llm_with_tools = TimeActorExamplesLLMWithTools()
time_tool_collection = TimeActorExamplesToolCollection()
time_simple_graph = TimeActorExamplesSimpleGraph()
time_graph_workflow = TimeActorExamplesGraphWorkflow()
time_all_files = TimeActorExamplesAllFiles()
time_reload = TimeActorExamplesReload()