98 lines
2.7 KiB
Python
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)
|