Răsfoiți Sursa

Optimize `StringBuilder.as_string` by constructing the string in-place and skipping unnecessary checks.

Co-authored-by: YYF233333 <[email protected]>
Lukas Tenbrink 7 luni în urmă
părinte
comite
76af9537ed
1 a modificat fișierele cu 5 adăugiri și 6 ștergeri
  1. 5 6
      core/string/string_builder.cpp

+ 5 - 6
core/string/string_builder.cpp

@@ -61,7 +61,9 @@ String StringBuilder::as_string() const {
 		return "";
 		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;
 	int current_position = 0;
 
 
@@ -92,10 +94,7 @@ String StringBuilder::as_string() const {
 			c_string_elem++;
 			c_string_elem++;
 		}
 		}
 	}
 	}
+	buffer[current_position] = 0;
 
 
-	String final_string = String(buffer, string_length);
-
-	memdelete_arr(buffer);
-
-	return final_string;
+	return string;
 }
 }