From 9ed89c17dee752154c36d71cae93d20cccfc71ef Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Mon, 12 Oct 2026 14:27:51 +0300 Subject: perf: optimize hot-path loops, data structures, and cache locality --- src/common/input.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/common/input.c') diff --git a/src/common/input.c b/src/common/input.c index eac4d1a..ff578e3 100644 --- a/src/common/input.c +++ b/src/common/input.c @@ -53,8 +53,13 @@ bool input_queue_push(struct input_queue *q, const struct yasl_input_event *ev) goto failed; struct yasl_input_event *events = malloc(capacity * sizeof(*events)); if (!events) goto failed; - for (size_t i = 0; i < q->count; i++) - events[i] = q->events[(q->head + i) % q->capacity]; + if (q->events && q->count > 0) { + size_t first = q->capacity - q->head; + if (first > q->count) first = q->count; + memcpy(events, q->events + q->head, first * sizeof(*events)); + if (q->count > first) + memcpy(events + first, q->events, (q->count - first) * sizeof(*events)); + } free(q->events); q->events = events; q->capacity = capacity; -- cgit v1.2.3