From 9fc97f60975fcb2199a304dd502385f0420e4ca3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 4 Sep 2020 12:06:09 +0100 Subject: [PATCH] Erase m_CurrentResources from the end not the beginning * Since it's a sorted vector this avoids O(n^2) time to erase everything one by one. --- renderdoc/driver/gl/gl_manager.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/gl/gl_manager.h b/renderdoc/driver/gl/gl_manager.h index 5d998c820..03d7f9c0f 100644 --- a/renderdoc/driver/gl/gl_manager.h +++ b/renderdoc/driver/gl/gl_manager.h @@ -89,13 +89,19 @@ public: while(!m_CurrentResources.empty()) { - auto it = m_CurrentResources.begin(); + auto it = m_CurrentResources.end(); + --it; ResourceId id = it->second.first; if(it->second.second) it->second.second->Delete(this); - if(!m_CurrentResources.empty() && m_CurrentResources.begin()->second.first == id) - m_CurrentResources.erase(m_CurrentResources.begin()); + if(!m_CurrentResources.empty()) + { + auto last = m_CurrentResources.end(); + last--; + if(last->second.first == id) + m_CurrentResources.erase(last); + } } m_CurrentResources.clear();