Skip to content

Commit 0649a63

Browse files
perf: optimize O(N*M) array filtering with O(1) Set lookups
Co-authored-by: xb1g <70068561+xb1g@users.noreply.github.com>
1 parent b2b5e36 commit 0649a63

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

app/api/assignments/[id]/nodes/route.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,9 @@ export async function POST(
242242
}
243243

244244
const existingNodeIds = existingNodes?.map((n) => n.id) || [];
245-
const missingNodes = node_ids.filter((id) => !existingNodeIds.includes(id));
245+
// Bolt Optimization: Pre-compute Set for O(1) lookup instead of O(N) array includes
246+
const existingNodeIdsSet = new Set(existingNodeIds);
247+
const missingNodes = node_ids.filter((id) => !existingNodeIdsSet.has(id));
246248

247249
if (missingNodes.length > 0) {
248250
return NextResponse.json(

app/api/classrooms/[id]/grading/route.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,9 @@ export async function GET(
262262

263263
// Get additional profiles for members not in submissions
264264
const classroomUserIds = classroomMembers.map(m => m.user_id);
265-
const missingUserIds = classroomUserIds.filter(id => !submissionUserIds.includes(id));
265+
// Bolt Optimization: Pre-compute Set for O(1) lookup instead of O(N) array includes
266+
const submissionUserIdsSet = new Set(submissionUserIds);
267+
const missingUserIds = classroomUserIds.filter(id => !submissionUserIdsSet.has(id));
266268

267269
let additionalProfiles: any[] = [];
268270
if (missingUserIds.length > 0) {

0 commit comments

Comments
 (0)