Use std::unordered_map in ResourceManager.
The hashed query performs significantly faster than std::map.
This improves performance in applications which use Bind* often.
Also use the same scheme for the Context-managed resources.
BUG=angleproject:1333
Change-Id: I8a1f25d80e060c62dab1f86005e1bc4df1c06dba
Reviewed-on: https://chromium-review.googlesource.com/331387
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 031b98e..dba4aa9 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -567,7 +567,7 @@
void Context::deleteFramebuffer(GLuint framebuffer)
{
- FramebufferMap::iterator framebufferObject = mFramebufferMap.find(framebuffer);
+ auto framebufferObject = mFramebufferMap.find(framebuffer);
if (framebufferObject != mFramebufferMap.end())
{
@@ -581,7 +581,7 @@
void Context::deleteFenceNV(GLuint fence)
{
- FenceNVMap::iterator fenceObject = mFenceNVMap.find(fence);
+ auto fenceObject = mFenceNVMap.find(fence);
if (fenceObject != mFenceNVMap.end())
{
@@ -593,7 +593,7 @@
void Context::deleteQuery(GLuint query)
{
- QueryMap::iterator queryObject = mQueryMap.find(query);
+ auto queryObject = mQueryMap.find(query);
if (queryObject != mQueryMap.end())
{
mQueryHandleAllocator.release(queryObject->first);
@@ -915,7 +915,7 @@
FenceNV *Context::getFenceNV(unsigned int handle)
{
- FenceNVMap::iterator fence = mFenceNVMap.find(handle);
+ auto fence = mFenceNVMap.find(handle);
if (fence == mFenceNVMap.end())
{
@@ -929,7 +929,7 @@
Query *Context::getQuery(unsigned int handle, bool create, GLenum type)
{
- QueryMap::iterator query = mQueryMap.find(handle);
+ auto query = mQueryMap.find(handle);
if (query == mQueryMap.end())
{