Author: michiel
Date: 2009-06-30 11:57:16 +0200 (Tue, 30 Jun 2009)
New Revision: 36499

Modified:
   mmbase/trunk/core/src/main/java/org/mmbase/storage/search/ResultBuilder.java
Log:
this code is cloning very many DataTypes, while most of the time it's the same 
one. Added a simple cache, to void a whole lot of those

Modified: 
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/ResultBuilder.java
===================================================================
--- 
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/ResultBuilder.java    
    2009-06-30 09:35:51 UTC (rev 36498)
+++ 
mmbase/trunk/core/src/main/java/org/mmbase/storage/search/ResultBuilder.java    
    2009-06-30 09:57:16 UTC (rev 36499)
@@ -14,7 +14,9 @@
 
 import org.mmbase.bridge.Field;
 import org.mmbase.cache.AggregatedResultCache;
+import org.mmbase.cache.Cache;
 import org.mmbase.module.core.*;
+import org.mmbase.core.CoreField;
 import org.mmbase.storage.StorageException;
 
 /**
@@ -31,7 +33,17 @@
 public class ResultBuilder extends VirtualBuilder {
 
     private final SearchQuery query;
+    protected static final Cache<String, CoreField> fieldCache = new 
Cache<String, CoreField>(200) {
+        @Override
+        public String getName() {
+            return "ResultFieldCache";
+        }
+    };
+    static {
+        fieldCache.putCache();
+    }
 
+
     /**
      * Creator.
      * Creates new <code>ResultBuilder</code> instance, used to represent
@@ -50,7 +62,13 @@
             if (fieldAlias == null) {
                 fieldAlias = field.getFieldName();
             }
-            fields.put(fieldAlias, 
org.mmbase.core.util.Fields.createField(fieldAlias, field.getType(), -1, 
Field.STATE_VIRTUAL, null));
+            String key = fieldAlias + "-" + field.getType();
+            CoreField coreField = fieldCache.get(key);
+            if (coreField == null) {
+                coreField = 
org.mmbase.core.util.Fields.createField(fieldAlias, field.getType(), -1, 
Field.STATE_VIRTUAL, null);
+                fieldCache.put(key, coreField);
+            }
+            fields.put(fieldAlias, coreField);
         }
     }
 

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to