Skip to content

Commit 7007380

Browse files
committed
Avoid multiple lookups in Dictionary::operator[]
Updated Dictionary::operator[] to get reference to value once to avoid multiple HashMap lookups.
1 parent 1753893 commit 7007380

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

core/variant/dictionary.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,12 @@ Variant &Dictionary::operator[](const Variant &p_key) {
101101
}
102102
return *_p->read_only;
103103
} else {
104-
if (unlikely(!_p->variant_map.has(key))) {
105-
VariantInternal::initialize(&_p->variant_map[key], _p->typed_value.type);
104+
const uint32_t old_size = _p->variant_map.size();
105+
Variant &value = _p->variant_map[key];
106+
if (_p->variant_map.size() > old_size) {
107+
VariantInternal::initialize(&value, _p->typed_value.type);
106108
}
107-
return _p->variant_map[key];
109+
return value;
108110
}
109111
}
110112

0 commit comments

Comments
 (0)