Merge pull request #76748 from KoBeWi/has_feature(fast)

Cache feature list in `OS.has_feature()`
This commit is contained in:
Rémi Verschelde 2023-05-08 12:20:49 +02:00
commit fe6cd734ad
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 10 additions and 1 deletions

View File

@ -423,7 +423,14 @@ Error OS::set_thread_name(const String &p_name) {
};
bool OS::has_feature(const String &p_feature) const {
return ::OS::get_singleton()->has_feature(p_feature);
const bool *value_ptr = feature_cache.getptr(p_feature);
if (value_ptr) {
return *value_ptr;
} else {
const bool has = ::OS::get_singleton()->has_feature(p_feature);
feature_cache[p_feature] = has;
return has;
}
}
uint64_t OS::get_static_memory_usage() const {

View File

@ -119,6 +119,8 @@ public:
class OS : public Object {
GDCLASS(OS, Object);
mutable HashMap<String, bool> feature_cache;
protected:
static void _bind_methods();
static OS *singleton;