From 955f408f6317bd4192119c461baf5ad3ba8f2c9e Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:46:54 +0000 Subject: [PATCH] Optimize EntityManager::getTransforms to reuse memory - Added `mutable std::vector cachedTransforms` to EntityManager. - Updated `getTransforms` to return `const std::vector&`. - Reused `cachedTransforms` to avoid per-frame allocation. - Updated `main.cpp` to use the returned reference. --- src/EntityManager.h | 11 ++++++----- src/main.cpp | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/EntityManager.h b/src/EntityManager.h index 3720a3f..e65603e 100644 --- a/src/EntityManager.h +++ b/src/EntityManager.h @@ -9,6 +9,7 @@ class EntityManager { private: std::vector> entities; std::unordered_map entityMap; + mutable std::vector cachedTransforms; public: // Add entity to the scene @@ -38,13 +39,13 @@ class EntityManager { } // Get all transforms for acceleration structure - std::vector getTransforms() const { - std::vector transforms; - transforms.reserve(entities.size()); + const std::vector& getTransforms() const { + cachedTransforms.clear(); + cachedTransforms.reserve(entities.size()); for (const auto& entity : entities) { - transforms.push_back(entity->transform); + cachedTransforms.push_back(entity->transform); } - return transforms; + return cachedTransforms; } // Get entity by name diff --git a/src/main.cpp b/src/main.cpp index 4d62011..72b5d54 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -834,7 +834,7 @@ class RacingEngine { // Prepare TLAS instance data (CPU-side, before command buffer recording) if (entityManager.countDynamic() > 0) { - auto transforms = entityManager.getTransforms(); + const auto& transforms = entityManager.getTransforms(); acceleration.prepareInstanceData(device, transforms); }