perf(server): eliminate O(N) heap cloning across standup, snippet, and graph handlers
This commit is contained in:
1 parent
9d7cd347c6
commit
13c7eca4c2
3 files changed
+15
-7
No files matched your search
@@ -419,7 +419,7 @@ impl McpTool for VisualizeGraphHandler {
|
||||
if query.is_empty() || included.contains(r.from.as_str()) || included.contains(r.to.as_str()) {
|
||||
included.insert(r.from.as_str());
|
||||
included.insert(r.to.as_str());
|
||||
to_draw.push(r.clone());
|
||||
to_draw.push(r);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -254,11 +254,19 @@ impl McpTool for GenerateStandupReportHandler {
|
||||
.unwrap_or_default()
|
||||
.as_secs()
|
||||
.saturating_sub(req.hours_lookback * 3600);
|
||||
let tasks = state.tasks.read_with(|items| items.iter().filter(|t| t.updated_at >= cutoff).cloned().collect::<Vec<_>>());
|
||||
let changes = state.ledger.read_with(|items| items.iter().filter(|c| c.timestamp >= cutoff).cloned().collect::<Vec<_>>());
|
||||
let summaries = state.session_summaries.read_with(|items| items.iter().filter(|s| s.namespace == req.namespace && s.timestamp >= cutoff).cloned().collect::<Vec<_>>());
|
||||
let report = serde_json::json!({ "tasks_updated": tasks, "code_changes": changes, "session_summaries": summaries });
|
||||
Ok(report.to_string())
|
||||
|
||||
let report_str = state.tasks.read_with(|items| {
|
||||
state.ledger.read_with(|changes| {
|
||||
state.session_summaries.read_with(|summaries| {
|
||||
let filtered_tasks: Vec<_> = items.iter().filter(|t| t.updated_at >= cutoff).collect();
|
||||
let filtered_changes: Vec<_> = changes.iter().filter(|c| c.timestamp >= cutoff).collect();
|
||||
let filtered_summaries: Vec<_> = summaries.iter().filter(|s| s.namespace == req.namespace && s.timestamp >= cutoff).collect();
|
||||
let report = serde_json::json!({ "tasks_updated": filtered_tasks, "code_changes": filtered_changes, "session_summaries": filtered_summaries });
|
||||
report.to_string()
|
||||
})
|
||||
})
|
||||
});
|
||||
Ok(report_str)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ impl McpTool for SearchSnippetsHandler {
|
||||
contains_ignore_ascii_case(&s.name, &query)
|
||||
|| contains_ignore_ascii_case(&s.description, &query)
|
||||
|| contains_ignore_ascii_case(&s.language, &query)
|
||||
}).cloned().collect();
|
||||
}).collect();
|
||||
serde_json::to_string(&results).unwrap_or_default()
|
||||
});
|
||||
Ok(data.to_string())
|
||||
|
||||
Reference in new issue
Block a user