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