From 2a02cabe4d3ed3aea307560e4bfcc98a8acbedcc Mon Sep 17 00:00:00 2001 From: aaronp64 Date: Wed, 21 May 2025 13:50:10 -0400 Subject: [PATCH] Use LocalVector for RingBuffer Updated RingBuffer to use LocalVector instead of Vector, to avoid _copy_on_write overhead when writing to the buffer. --- core/templates/ring_buffer.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/templates/ring_buffer.h b/core/templates/ring_buffer.h index e60b94859ec..3efa4ff3e99 100644 --- a/core/templates/ring_buffer.h +++ b/core/templates/ring_buffer.h @@ -30,11 +30,11 @@ #pragma once -#include "core/templates/vector.h" +#include "core/templates/local_vector.h" template class RingBuffer { - Vector data; + LocalVector data; int read_pos = 0; int write_pos = 0; int size_mask; @@ -142,7 +142,7 @@ public: Error write(const T &p_v) { ERR_FAIL_COND_V(space_left() < 1, FAILED); - data.write[inc(write_pos, 1)] = p_v; + data[inc(write_pos, 1)] = p_v; return OK; } @@ -159,7 +159,7 @@ public: int total = end - pos; for (int i = 0; i < total; i++) { - data.write[pos + i] = p_buf[src++]; + data[pos + i] = p_buf[src++]; } to_write -= total; pos = 0; @@ -199,7 +199,7 @@ public: data.resize(int64_t(1) << int64_t(p_power)); if (old_size < new_size && read_pos > write_pos) { for (int i = 0; i < write_pos; i++) { - data.write[(old_size + i) & mask] = data[i]; + data[(old_size + i) & mask] = data[i]; } write_pos = (old_size + write_pos) & mask; } else {