Blob Blame History Raw
From 202ffa522668087cc133026febf21a7de8963218 Mon Sep 17 00:00:00 2001
From: Milian Wolff <mail@milianw.de>
Date: Mon, 1 Dec 2014 11:51:04 +0100
Subject: [PATCH 17/30] Optimize: Only do one hash lookup to retrieve value
 from cache.

Compilers do not merge the call to contains() and the successive
value() lookup. Using iterators thus saves us one QHash lookup.
---
 server/src/storage/entities.xsl | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/server/src/storage/entities.xsl b/server/src/storage/entities.xsl
index a397544..9471293 100644
--- a/server/src/storage/entities.xsl
+++ b/server/src/storage/entities.xsl
@@ -168,9 +168,9 @@ set<xsl:value-of select="$methodName"/>( <xsl:call-template name="argument"/> )
   <xsl:if test="$cache != ''">
   if ( Private::cacheEnabled ) {
     QMutexLocker lock(&amp;Private::cacheMutex);
-    if ( Private::<xsl:value-of select="$cache"/>.contains( <xsl:value-of select="$key"/> ) ) {
-      const <xsl:value-of select="$className"/> tmp = Private::<xsl:value-of select="$cache"/>.value( <xsl:value-of select="$key"/> );
-      return tmp;
+    QHash&lt;<xsl:value-of select="column[@name = $key]/@type"/>, <xsl:value-of select="$className"/>&gt;::const_iterator it = Private::<xsl:value-of select="$cache"/>.constFind(<xsl:value-of select="$key"/>);
+    if ( it != Private::<xsl:value-of select="$cache"/>.constEnd() ) {
+      return it.value();
     }
   }
   </xsl:if>
-- 
2.1.0