From 0c80bc14b091025437eb5d05a750f2894d98927a Mon Sep 17 00:00:00 2001 From: Mert Can Altin Date: Fri, 28 Nov 2025 23:46:59 +0300 Subject: [PATCH 1/3] src: optimize trace_name allocation in Worker::Run --- src/node_worker.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/node_worker.cc b/src/node_worker.cc index 75b20721f27071..fb9f6509c86e83 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -295,8 +295,17 @@ size_t Worker::NearHeapLimit(void* data, size_t current_heap_limit, } void Worker::Run() { - std::string trace_name = "[worker " + std::to_string(thread_id_.id) + "]" + - (name_ == "" ? "" : " " + name_); + std::string trace_name; + // Pre-allocate space: "[worker " (8) + thread_id (20) + "]" (1) + " " (1) + // + typical name (~30) = ~60 bytes. Use 64 for alignment. + trace_name.reserve(64); + trace_name = "[worker "; + trace_name += std::to_string(thread_id_.id); + trace_name += "]"; + if (!name_.empty()) { + trace_name += " "; + trace_name += name_; + } TRACE_EVENT_METADATA1( "__metadata", "thread_name", "name", TRACE_STR_COPY(trace_name.c_str())); CHECK_NOT_NULL(platform_); From 8ea86929cf62e5e7fa46cbc340ed806bcfee2755 Mon Sep 17 00:00:00 2001 From: Mert Can Altin Date: Sat, 29 Nov 2025 12:58:35 +0300 Subject: [PATCH 2/3] src: optimize trace_name allocation in Worker::Run --- src/node_worker.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/node_worker.cc b/src/node_worker.cc index fb9f6509c86e83..045474201d8513 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -296,11 +296,13 @@ size_t Worker::NearHeapLimit(void* data, size_t current_heap_limit, void Worker::Run() { std::string trace_name; - // Pre-allocate space: "[worker " (8) + thread_id (20) + "]" (1) + " " (1) - // + typical name (~30) = ~60 bytes. Use 64 for alignment. - trace_name.reserve(64); + std::string id = std::to_string(thread_id_.id); + // Pre-allocate space: "[worker " (8) + thread_id + "]" (1) + // + (optional: " " (1) + name) + trace_name.reserve(8 + id.size() + 1 + + (name_.empty() ? 0 : 1 + name_.size())); trace_name = "[worker "; - trace_name += std::to_string(thread_id_.id); + trace_name += id; trace_name += "]"; if (!name_.empty()) { trace_name += " "; From 1b54dd667ffc94b2e24e5e51fbf85307e8aadd1b Mon Sep 17 00:00:00 2001 From: Mert Can Altin Date: Sat, 29 Nov 2025 13:04:01 +0300 Subject: [PATCH 3/3] src: optimize trace_name allocation in Worker::Run --- src/node_worker.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/node_worker.cc b/src/node_worker.cc index 045474201d8513..94a281b102a41f 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -298,9 +298,8 @@ void Worker::Run() { std::string trace_name; std::string id = std::to_string(thread_id_.id); // Pre-allocate space: "[worker " (8) + thread_id + "]" (1) - // + (optional: " " (1) + name) - trace_name.reserve(8 + id.size() + 1 + - (name_.empty() ? 0 : 1 + name_.size())); + // + (if name exists: " " (1) + name) + trace_name.reserve(9 + id.size() + name_.size()); trace_name = "[worker "; trace_name += id; trace_name += "]";