From 76af9537ed05fe60fe6282a8872d22f2383c96ab Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Thu, 12 Dec 2024 01:17:02 +0100 Subject: [PATCH] Optimize `StringBuilder.as_string` by constructing the string in-place and skipping unnecessary checks. Co-authored-by: YYF233333 --- core/string/string_builder.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/core/string/string_builder.cpp b/core/string/string_builder.cpp index 7f0a6abc04f..91ac8a09bbc 100644 --- a/core/string/string_builder.cpp +++ b/core/string/string_builder.cpp @@ -61,7 +61,9 @@ String StringBuilder::as_string() const { return ""; } - char32_t *buffer = memnew_arr(char32_t, string_length); + String string; + string.resize(string_length + 1); + char32_t *buffer = string.ptrw(); int current_position = 0; @@ -92,10 +94,7 @@ String StringBuilder::as_string() const { c_string_elem++; } } + buffer[current_position] = 0; - String final_string = String(buffer, string_length); - - memdelete_arr(buffer); - - return final_string; + return string; }