Rex Dieter adf30a
From 202ffa522668087cc133026febf21a7de8963218 Mon Sep 17 00:00:00 2001
Rex Dieter adf30a
From: Milian Wolff <mail@milianw.de>
Rex Dieter adf30a
Date: Mon, 1 Dec 2014 11:51:04 +0100
Rex Dieter adf30a
Subject: [PATCH 17/30] Optimize: Only do one hash lookup to retrieve value
Rex Dieter adf30a
 from cache.
Rex Dieter adf30a
Rex Dieter adf30a
Compilers do not merge the call to contains() and the successive
Rex Dieter adf30a
value() lookup. Using iterators thus saves us one QHash lookup.
Rex Dieter adf30a
---
Rex Dieter adf30a
 server/src/storage/entities.xsl | 6 +++---
Rex Dieter adf30a
 1 file changed, 3 insertions(+), 3 deletions(-)
Rex Dieter adf30a
Rex Dieter adf30a
diff --git a/server/src/storage/entities.xsl b/server/src/storage/entities.xsl
Rex Dieter adf30a
index a397544..9471293 100644
Rex Dieter adf30a
--- a/server/src/storage/entities.xsl
Rex Dieter adf30a
+++ b/server/src/storage/entities.xsl
Rex Dieter adf30a
@@ -168,9 +168,9 @@ set<xsl:value-of select="$methodName"/>( <xsl:call-template name="argument"/> )
Rex Dieter adf30a
   <xsl:if test="$cache != ''">
Rex Dieter adf30a
   if ( Private::cacheEnabled ) {
Rex Dieter adf30a
     QMutexLocker lock(&Private::cacheMutex);
Rex Dieter adf30a
-    if ( Private::<xsl:value-of select="$cache"/>.contains( <xsl:value-of select="$key"/> ) ) {
Rex Dieter adf30a
-      const <xsl:value-of select="$className"/> tmp = Private::<xsl:value-of select="$cache"/>.value( <xsl:value-of select="$key"/> );
Rex Dieter adf30a
-      return tmp;
Rex Dieter adf30a
+    QHash<<xsl:value-of select="column[@name = $key]/@type"/>, <xsl:value-of select="$className"/>>::const_iterator it = Private::<xsl:value-of select="$cache"/>.constFind(<xsl:value-of select="$key"/>);
Rex Dieter adf30a
+    if ( it != Private::<xsl:value-of select="$cache"/>.constEnd() ) {
Rex Dieter adf30a
+      return it.value();
Rex Dieter adf30a
     }
Rex Dieter adf30a
   }
Rex Dieter adf30a
   </xsl:if>
Rex Dieter adf30a
-- 
Rex Dieter adf30a
2.1.0
Rex Dieter adf30a