[jbosscache-commits] JBoss Cache SVN: r7265 - in core/branches/flat/src: test/java/org/jboss/starobrno/atomic and 1 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Mon Dec 8 13:59:07 EST 2008


Author: manik.surtani at jboss.com
Date: 2008-12-08 13:59:07 -0500 (Mon, 08 Dec 2008)
New Revision: 7265

Modified:
   core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMap.java
   core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapDelta.java
   core/branches/flat/src/test/java/org/jboss/starobrno/atomic/AtomicHashMapTest.java
   core/branches/flat/src/test/java/org/jboss/starobrno/profiling/TreeProfileTest.java
Log:
Perf improvements

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMap.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMap.java	2008-12-08 18:24:10 UTC (rev 7264)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMap.java	2008-12-08 18:59:07 UTC (rev 7265)
@@ -97,7 +97,7 @@
       op.key = key;
       op.newValue = value;
       op.oldValue = delegate.put(key, value);
-      delta.changelog.add(op);
+      delta.addOperation(op);
       return op.oldValue;
    }
 
@@ -106,7 +106,7 @@
       RemoveOperation<K, V> op = new RemoveOperation<K, V>();
       op.key = (K) key;
       op.oldValue = delegate.remove(key);
-      delta.changelog.add(op);
+      delta.addOperation(op);
       return op.oldValue;
    }
 
@@ -120,7 +120,7 @@
    {
       ClearOperation<K, V> op = new ClearOperation<K, V>();
       op.originalEntries = (FastCopyHashMap<K, V>) delegate.clone();
-      delta.changelog.add(op);
+      delta.addOperation(op);
       delegate.clear();
    }
 

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapDelta.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapDelta.java	2008-12-08 18:24:10 UTC (rev 7264)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapDelta.java	2008-12-08 18:59:07 UTC (rev 7265)
@@ -27,7 +27,7 @@
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -37,7 +37,7 @@
  */
 public class AtomicHashMapDelta implements Delta
 {
-   List<Operation> changelog = new LinkedList<Operation>();
+   private List<Operation> changelog;
    private static final Log log = LogFactory.getLog(AtomicHashMapDelta.class);
    private static final boolean trace = log.isTraceEnabled();
 
@@ -54,6 +54,16 @@
       return other;
    }
 
+   public void addOperation(Operation o)
+   {
+      if (changelog == null)
+      {
+         // lazy init
+         changelog = new ArrayList<Operation>();
+      }
+      changelog.add(o);
+   }
+
    public void writeExternal(ObjectOutput out) throws IOException
    {
       if (trace) log.trace("Serializing changelog " + changelog);
@@ -73,4 +83,9 @@
             "changelog=" + changelog +
             '}';
    }
+
+   public int getChangeLogSize()
+   {
+      return changelog == null ? 0 : changelog.size();
+   }
 }
\ No newline at end of file

Modified: core/branches/flat/src/test/java/org/jboss/starobrno/atomic/AtomicHashMapTest.java
===================================================================
--- core/branches/flat/src/test/java/org/jboss/starobrno/atomic/AtomicHashMapTest.java	2008-12-08 18:24:10 UTC (rev 7264)
+++ core/branches/flat/src/test/java/org/jboss/starobrno/atomic/AtomicHashMapTest.java	2008-12-08 18:59:07 UTC (rev 7265)
@@ -87,7 +87,7 @@
       m.put("k1", "v3");
       assert m.size() == 1;
       AtomicHashMapDelta d = (AtomicHashMapDelta) m.delta();
-      assert !d.changelog.isEmpty();
+      assert d.getChangeLogSize() != 0;
 
       AtomicHashMap newMap = new AtomicHashMap();
       newMap.initForWriting();

Modified: core/branches/flat/src/test/java/org/jboss/starobrno/profiling/TreeProfileTest.java
===================================================================
--- core/branches/flat/src/test/java/org/jboss/starobrno/profiling/TreeProfileTest.java	2008-12-08 18:24:10 UTC (rev 7264)
+++ core/branches/flat/src/test/java/org/jboss/starobrno/profiling/TreeProfileTest.java	2008-12-08 18:59:07 UTC (rev 7265)
@@ -3,6 +3,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.cache.lock.IsolationLevel;
+import org.jboss.cache.transaction.DummyTransactionManager;
 import org.jboss.starobrno.Cache;
 import org.jboss.starobrno.UnitTestCacheFactory;
 import org.jboss.starobrno.config.Configuration;
@@ -43,7 +44,7 @@
       Test configuration options
     */
    protected static final long NUM_OPERATIONS = 1000000; // DURATION is replaced with a fixed number of operations instead.
-   protected static final int NUM_THREADS = 25;
+   protected static final int NUM_THREADS = 50;
    protected static final int MAX_RANDOM_SLEEP_MILLIS = 1;
    protected static final int MAX_OVERALL_FQNS = 2000;
    protected static final int TREE_DEPTH = 2;
@@ -59,7 +60,8 @@
       cfg.setInvocationBatchingEnabled(true);
       cfg.setCacheMode(Configuration.CacheMode.LOCAL);
       cfg.setConcurrencyLevel(2000);
-      cfg.setLockAcquisitionTimeout(60000);
+      cfg.setLockAcquisitionTimeout(120000);
+      cfg.setLockParentForChildInsertRemove(true);
       cfg.setIsolationLevel(IsolationLevel.REPEATABLE_READ);
       Cache c = new UnitTestCacheFactory().createCache(cfg);
       cache = new TreeCacheImpl(c);
@@ -147,8 +149,15 @@
          {
             public void run()
             {
-               // this will create the necessary nodes.
-               cache.put(fqn, "key", Collections.emptyMap());
+               try
+               {
+                  // this will create the necessary nodes.
+                  cache.put(fqn, "key", Collections.emptyMap());
+               }
+               catch (Exception e)
+               {
+                  log.warn("Caught Exception", e);
+               }
             }
          });
       }
@@ -160,10 +169,23 @@
          {
             public void run()
             {
-               Fqn fqn = fqns.get(r.nextInt(MAX_OVERALL_FQNS));
-               cache.get(fqn, "key");
-               cache.put(fqn, "key", "Value");
-               cache.remove(fqn, "key");
+               try
+               {
+                  Fqn fqn = fqns.get(r.nextInt(MAX_OVERALL_FQNS));
+                  DummyTransactionManager.getInstance().begin();
+                  cache.get(fqn, "key");
+                  DummyTransactionManager.getInstance().commit();
+                  DummyTransactionManager.getInstance().begin();
+                  cache.put(fqn, "key", "Value");
+                  DummyTransactionManager.getInstance().commit();
+                  DummyTransactionManager.getInstance().begin();
+                  cache.remove(fqn, "key");
+                  DummyTransactionManager.getInstance().commit();
+               }
+               catch (Exception e)
+               {
+                  log.warn("Caught Exception", e);
+               }
             }
          });
       }
@@ -258,25 +280,38 @@
       {
          Fqn fqn = fqns.get(r.nextInt(MAX_OVERALL_FQNS));
          long d = 0, st = 0;
-         switch (mode)
+         try
          {
-            case PUT:
-               Object value = getRandomString();
-               st = System.nanoTime();
-               cache.put(fqn, "key", value);
-               d = System.nanoTime() - st;
-               break;
-            case GET:
-               st = System.nanoTime();
-               cache.get(fqn, "key");
-               d = System.nanoTime() - st;
-               break;
-            case REMOVE:
-               st = System.nanoTime();
-               cache.remove(fqn, "key");
-               d = System.nanoTime() - st;
-               break;
+            switch (mode)
+            {
+               case PUT:
+                  Object value = getRandomString();
+                  st = System.nanoTime();
+                  DummyTransactionManager.getInstance().begin();
+                  cache.put(fqn, "key", value);
+                  DummyTransactionManager.getInstance().commit();
+                  d = System.nanoTime() - st;
+                  break;
+               case GET:
+                  st = System.nanoTime();
+                  DummyTransactionManager.getInstance().begin();
+                  cache.get(fqn, "key");
+                  DummyTransactionManager.getInstance().commit();
+                  d = System.nanoTime() - st;
+                  break;
+               case REMOVE:
+                  st = System.nanoTime();
+                  DummyTransactionManager.getInstance().begin();
+                  cache.remove(fqn, "key");
+                  DummyTransactionManager.getInstance().commit();
+                  d = System.nanoTime() - st;
+                  break;
+            }
          }
+         catch (Exception e)
+         {
+            d = 0;
+         }
          duration.getAndAdd(d);
       }
    }




More information about the jbosscache-commits mailing list