chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""Build performance benchmark: measures timing of graph operations."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run(repo_path: Path, store, config: dict) -> list[dict]:
|
||||
"""Run build performance benchmark."""
|
||||
stats = store.get_stats()
|
||||
|
||||
# Time flow detection
|
||||
try:
|
||||
from code_review_graph.flows import store_flows, trace_flows
|
||||
t0 = time.perf_counter()
|
||||
flows = trace_flows(store)
|
||||
store_flows(store, flows)
|
||||
flow_time = time.perf_counter() - t0
|
||||
except Exception as exc:
|
||||
logger.warning("Flow detection failed: %s", exc)
|
||||
flow_time = 0.0
|
||||
|
||||
# Time community detection
|
||||
try:
|
||||
from code_review_graph.communities import detect_communities, store_communities
|
||||
t0 = time.perf_counter()
|
||||
comms = detect_communities(store)
|
||||
store_communities(store, comms)
|
||||
community_time = time.perf_counter() - t0
|
||||
except Exception as exc:
|
||||
logger.warning("Community detection failed: %s", exc)
|
||||
community_time = 0.0
|
||||
|
||||
# Time search (average of queries)
|
||||
search_times: list[float] = []
|
||||
for sq in config.get("search_queries", [])[:10]:
|
||||
t0 = time.perf_counter()
|
||||
store.search_nodes(sq["query"], limit=20)
|
||||
search_times.append(time.perf_counter() - t0)
|
||||
|
||||
avg_search_ms = round(
|
||||
sum(search_times) / max(len(search_times), 1) * 1000, 1
|
||||
)
|
||||
|
||||
return [{
|
||||
"repo": config["name"],
|
||||
"file_count": stats.files_count,
|
||||
"node_count": stats.total_nodes,
|
||||
"edge_count": stats.total_edges,
|
||||
"flow_detection_seconds": round(flow_time, 3),
|
||||
"community_detection_seconds": round(community_time, 3),
|
||||
"search_avg_ms": avg_search_ms,
|
||||
"nodes_per_second": round(
|
||||
stats.total_nodes / max(flow_time, 0.001)
|
||||
),
|
||||
}]
|
||||
Reference in New Issue
Block a user