diff options
author | Jacques Lucke <jacques@blender.org> | 2022-09-17 13:08:43 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-09-17 13:08:57 +0300 |
commit | 7549e0c5ae36be739f0e0a38e87eb85428808e89 (patch) | |
tree | d931c76b0001cfc5bea7ac3f29287d91713ef5ac /source/blender/nodes/intern/geometry_nodes_log.cc | |
parent | 1810b1e4c88191e3578518e12f9f3d318e08dc60 (diff) |
Geometry Nodes: use stringref instead of string in logger
This reduces logging overhead. The performance difference is only
significant when there are many fast nodes. In my test file with many
math nodes, the performance improved from 720ms to 630ms.
Diffstat (limited to 'source/blender/nodes/intern/geometry_nodes_log.cc')
-rw-r--r-- | source/blender/nodes/intern/geometry_nodes_log.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/nodes/intern/geometry_nodes_log.cc b/source/blender/nodes/intern/geometry_nodes_log.cc index 350b199cd60..110573c9119 100644 --- a/source/blender/nodes/intern/geometry_nodes_log.cc +++ b/source/blender/nodes/intern/geometry_nodes_log.cc @@ -148,7 +148,9 @@ void GeoTreeLogger::log_value(const bNode &node, const bNodeSocket &socket, cons auto store_logged_value = [&](destruct_ptr<ValueLog> value_log) { auto &socket_values = socket.in_out == SOCK_IN ? this->input_socket_values : this->output_socket_values; - socket_values.append({node.name, socket.identifier, std::move(value_log)}); + socket_values.append({this->allocator->copy_string(node.name), + this->allocator->copy_string(socket.identifier), + std::move(value_log)}); }; auto log_generic_value = [&](const CPPType &type, const void *value) { @@ -194,7 +196,7 @@ void GeoTreeLogger::log_viewer_node(const bNode &viewer_node, log->geometry = geometry; log->field = field; log->geometry.ensure_owns_direct_data(); - this->viewer_node_logs.append({viewer_node.name, std::move(log)}); + this->viewer_node_logs.append({this->allocator->copy_string(viewer_node.name), std::move(log)}); } void GeoTreeLog::ensure_node_warnings() @@ -315,11 +317,11 @@ void GeoTreeLog::ensure_used_named_attributes() return; } - auto add_attribute = [&](const StringRef node_name, - const StringRef attribute_name, + auto add_attribute = [&](const StringRefNull node_name, + const StringRefNull attribute_name, const NamedAttributeUsage &usage) { - this->nodes.lookup_or_add_as(node_name).used_named_attributes.lookup_or_add_as(attribute_name, - usage) |= usage; + this->nodes.lookup_or_add_default(node_name).used_named_attributes.lookup_or_add( + attribute_name, usage) |= usage; this->used_named_attributes.lookup_or_add_as(attribute_name, usage) |= usage; }; |