Files
cleveragents-core/benchmarks/tool_builtin_file_bench.py
Jeffrey Phillips Freeman 36c571db83
CI / lint (pull_request) Successful in 15s
CI / typecheck (pull_request) Successful in 30s
CI / security (pull_request) Successful in 22s
CI / quality (pull_request) Successful in 16s
CI / integration_tests (pull_request) Successful in 5m12s
CI / build (pull_request) Successful in 16s
CI / lint (push) Successful in 13s
CI / typecheck (push) Successful in 29s
CI / security (push) Successful in 23s
CI / quality (push) Successful in 16s
CI / unit_tests (pull_request) Successful in 13m42s
CI / integration_tests (push) Successful in 4m53s
CI / build (push) Successful in 16s
CI / unit_tests (push) Successful in 15m9s
CI / coverage (pull_request) Successful in 7m58s
CI / coverage (push) Successful in 8m14s
CI / docker (pull_request) Successful in 9s
CI / docker (push) Successful in 8s
feat(repo): add resource repositories
2026-02-16 21:35:54 +00:00

117 lines
3.5 KiB
Python

"""ASV benchmarks for built-in file tools.
Measures the performance of:
- File read/write/edit/delete operations
- File list and search operations
- ChangeSet capture overhead
- Tool registration helpers
"""
from __future__ import annotations
import shutil
import sys
import tempfile
from pathlib import Path
try:
from cleveragents.tool.builtins import (
register_file_tools,
register_file_tools_with_changeset,
)
from cleveragents.tool.builtins.changeset import ChangeSetCapture
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.tool.builtins import (
register_file_tools,
register_file_tools_with_changeset,
)
from cleveragents.tool.builtins.changeset import ChangeSetCapture
from cleveragents.tool.registry import ToolRegistry
from cleveragents.tool.runner import ToolRunner
class FileToolSuite:
"""Benchmark built-in file tool operations."""
def setup(self) -> None:
self.sandbox = tempfile.mkdtemp()
self.registry = ToolRegistry()
register_file_tools(self.registry)
self.runner = ToolRunner(self.registry)
# Create test files
(Path(self.sandbox) / "read_test.txt").write_text("hello benchmark\n" * 100)
sub = Path(self.sandbox) / "sub"
sub.mkdir()
for i in range(10):
(sub / f"file_{i}.txt").write_text(f"content {i}\n")
def teardown(self) -> None:
shutil.rmtree(self.sandbox, ignore_errors=True)
def time_file_read(self) -> None:
self.runner.execute(
"builtin/file-read",
{"path": "read_test.txt", "sandbox_root": self.sandbox},
)
def time_file_write(self) -> None:
self.runner.execute(
"builtin/file-write",
{
"path": "bench_write.txt",
"content": "bench",
"sandbox_root": self.sandbox,
},
)
def time_file_list(self) -> None:
self.runner.execute(
"builtin/file-list",
{"path": "sub", "sandbox_root": self.sandbox},
)
def time_file_search(self) -> None:
self.runner.execute(
"builtin/file-search",
{"path": "sub", "pattern": "content", "sandbox_root": self.sandbox},
)
class ChangeSetCaptureSuite:
"""Benchmark changeset capture overhead."""
def setup(self) -> None:
self.sandbox = tempfile.mkdtemp()
self.capture = ChangeSetCapture(plan_id="bench-plan")
self.registry = ToolRegistry()
register_file_tools_with_changeset(self.registry, self.capture)
self.runner = ToolRunner(self.registry)
def teardown(self) -> None:
shutil.rmtree(self.sandbox, ignore_errors=True)
def time_write_with_capture(self) -> None:
self.runner.execute(
"builtin/file-write",
{"path": "captured.txt", "content": "data", "sandbox_root": self.sandbox},
)
def time_get_changeset(self) -> None:
self.capture.get_changeset()
class RegistrationSuite:
"""Benchmark tool registration helpers."""
def time_register_file_tools(self) -> None:
registry = ToolRegistry()
register_file_tools(registry)
def time_register_with_changeset(self) -> None:
registry = ToolRegistry()
capture = ChangeSetCapture(plan_id="bench")
register_file_tools_with_changeset(registry, capture)