Selaa lähdekoodia

Merge pull request #108981 from DeeJayLSP/faster-uid-path-from-cache

Make getting a path from UID cache slightly faster
Thaddeus Crews 1 kuukausi sitten
vanhempi
sitoutus
9a9e64a6ee
1 muutettua tiedostoa jossa 16 lisäystä ja 13 poistoa
  1. 16 13
      core/io/resource_uid.cpp

+ 16 - 13
core/io/resource_uid.cpp

@@ -328,19 +328,22 @@ Error ResourceUID::update_cache() {
 }
 
 String ResourceUID::get_path_from_cache(Ref<FileAccess> &p_cache_file, const String &p_uid_string) {
-	const uint32_t entry_count = p_cache_file->get_32();
-	CharString cs;
-	for (uint32_t i = 0; i < entry_count; i++) {
-		int64_t id = p_cache_file->get_64();
-		int32_t len = p_cache_file->get_32();
-		cs.resize_uninitialized(len + 1);
-		ERR_FAIL_COND_V(cs.size() != len + 1, String());
-		cs[len] = 0;
-		int32_t rl = p_cache_file->get_buffer((uint8_t *)cs.ptrw(), len);
-		ERR_FAIL_COND_V(rl != len, String());
-
-		if (singleton->id_to_text(id) == p_uid_string) {
-			return String::utf8(cs.get_data());
+	const int64_t uid_from_string = singleton->text_to_id(p_uid_string);
+	if (uid_from_string != INVALID_ID) {
+		const uint32_t entry_count = p_cache_file->get_32();
+		CharString cs;
+		for (uint32_t i = 0; i < entry_count; i++) {
+			int64_t id = p_cache_file->get_64();
+			int32_t len = p_cache_file->get_32();
+			cs.resize_uninitialized(len + 1);
+			ERR_FAIL_COND_V(cs.size() != len + 1, String());
+			cs[len] = 0;
+			int32_t rl = p_cache_file->get_buffer((uint8_t *)cs.ptrw(), len);
+			ERR_FAIL_COND_V(rl != len, String());
+
+			if (id == uid_from_string) {
+				return String::utf8(cs.get_data());
+			}
 		}
 	}
 	return String();