From 7007380d0c30de80fc0bb509535453570a730a04 Mon Sep 17 00:00:00 2001 From: aaronp64 Date: Wed, 5 Mar 2025 13:07:30 -0500 Subject: [PATCH] Avoid multiple lookups in Dictionary::operator[] Updated Dictionary::operator[] to get reference to value once to avoid multiple HashMap lookups. --- core/variant/dictionary.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/variant/dictionary.cpp b/core/variant/dictionary.cpp index c094d53270..926ab113c3 100644 --- a/core/variant/dictionary.cpp +++ b/core/variant/dictionary.cpp @@ -101,10 +101,12 @@ Variant &Dictionary::operator[](const Variant &p_key) { } return *_p->read_only; } else { - if (unlikely(!_p->variant_map.has(key))) { - VariantInternal::initialize(&_p->variant_map[key], _p->typed_value.type); + const uint32_t old_size = _p->variant_map.size(); + Variant &value = _p->variant_map[key]; + if (_p->variant_map.size() > old_size) { + VariantInternal::initialize(&value, _p->typed_value.type); } - return _p->variant_map[key]; + return value; } }