Files

98 lines
2.7 KiB
Python

"""ASV benchmarks for skill-level search and directory tools.
Measures the performance of:
- ListDir with filters
- Glob pattern matching
- Grep regex searching
"""
from __future__ import annotations
import shutil
import sys
import tempfile
from pathlib import Path
try:
from cleveragents.skills.builtins.search_ops import (
register_skill_search_tools,
)
from cleveragents.tool.registry import ToolRegistry
from cleveragents.tool.runner import ToolRunner
except ModuleNotFoundError:
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))
from cleveragents.skills.builtins.search_ops import (
register_skill_search_tools,
)
from cleveragents.tool.registry import ToolRegistry
from cleveragents.tool.runner import ToolRunner
class SkillSearchToolSuite:
"""Benchmark skill-level search tool operations."""
def setup(self) -> None:
self.sandbox = tempfile.mkdtemp()
self.registry = ToolRegistry()
register_skill_search_tools(self.registry)
self.runner = ToolRunner(self.registry)
# Create test file tree
sub = Path(self.sandbox) / "src"
sub.mkdir()
for i in range(20):
(sub / f"module_{i}.py").write_text(
f"def function_{i}():\n return {i}\n"
)
docs = Path(self.sandbox) / "docs"
docs.mkdir()
for i in range(5):
(docs / f"guide_{i}.md").write_text(f"# Guide {i}\nContent for guide {i}\n")
def teardown(self) -> None:
shutil.rmtree(self.sandbox, ignore_errors=True)
def time_list_dir(self) -> None:
self.runner.execute(
"skill/list-dir",
{"path": "src", "sandbox_root": self.sandbox},
)
def time_glob_py_files(self) -> None:
self.runner.execute(
"skill/glob",
{
"path": ".",
"pattern": "**/*.py",
"sandbox_root": self.sandbox,
},
)
def time_grep_function(self) -> None:
self.runner.execute(
"skill/grep",
{
"path": ".",
"pattern": "def function",
"sandbox_root": self.sandbox,
},
)
def time_grep_with_context(self) -> None:
self.runner.execute(
"skill/grep",
{
"path": ".",
"pattern": "def function",
"context_lines": 2,
"sandbox_root": self.sandbox,
},
)
class SkillSearchRegistrationSuite:
"""Benchmark skill search tool registration."""
def time_register_skill_search_tools(self) -> None:
registry = ToolRegistry()
register_skill_search_tools(registry)