From 6e5175592de2b8756062752b0a73d724ae496ca1 Mon Sep 17 00:00:00 2001 From: aaronp64 Date: Thu, 8 Aug 2024 13:16:42 -0400 Subject: [PATCH] Improve ClassDB::_is_parent_class performance Change ClassDB::_is_parent_class to use ClassInfo::inherits_ptr, instead of looking up each inherited class name. --- core/object/class_db.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index ceeb04b8ea..7abf23aaeb 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -227,16 +227,12 @@ public: #endif bool ClassDB::_is_parent_class(const StringName &p_class, const StringName &p_inherits) { - if (!classes.has(p_class)) { - return false; - } - - StringName inherits = p_class; - while (inherits.operator String().length()) { - if (inherits == p_inherits) { + ClassInfo *c = classes.getptr(p_class); + while (c) { + if (c->name == p_inherits) { return true; } - inherits = _get_parent_class(inherits); + c = c->inherits_ptr; } return false;