You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2014/04/21 23:00:20 UTC

svn commit: r1588981 - in /uima/uimaj/trunk/uimaj-core/src: main/java/org/apache/uima/jcas/impl/JCasHashMap.java test/java/org/apache/uima/jcas/impl/JCasHashMapTest.java

Author: schor
Date: Mon Apr 21 21:00:19 2014
New Revision: 1588981

URL: http://svn.apache.org/r1588981
Log:
No Jira - slight tune of JCasHash map - use load factor of .6 instead of .5.  Fix the test case to work with arbitrary load factors. 

Modified:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java
    uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/impl/JCasHashMapTest.java

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java?rev=1588981&r1=1588980&r2=1588981&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java Mon Apr 21 21:00:19 2014
@@ -63,7 +63,7 @@ public class JCasHashMap {
   
   private int sizeWhichTriggersExpansion;
   
-  private final float loadFactor = (float)0.50;
+  private final float loadFactor = (float)0.60;
   
   private final int initialCapacity; 
   

Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/impl/JCasHashMapTest.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/impl/JCasHashMapTest.java?rev=1588981&r1=1588980&r2=1588981&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/impl/JCasHashMapTest.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/impl/JCasHashMapTest.java Mon Apr 21 21:00:19 2014
@@ -130,23 +130,25 @@ public class JCasHashMapTest extends Tes
   }
   
   public void testGrowth() {
+    double loadfactor = .6;
     JCasHashMap m = new JCasHashMap(64, true); // true = do use cache 
     assertTrue(m.size() == 0);
      
-    fill32(m);
+    int switchpoint = (int)Math.floor(64 * loadfactor);
+    fill(switchpoint, m);
     assertTrue(m.getbitsMask() == 63);
-    m.put(new TOP(addrs[32], null));
+    m.put(new TOP(addrs[switchpoint + 1], null));
     assertTrue(m.getbitsMask() == 127);
     
     m.clear();
     assertTrue(m.getbitsMask() == 127);
 
-    fill32(m);
+    fill(switchpoint, m);
     assertTrue(m.getbitsMask() == 127);
-    m.put(new TOP(addrs[32], null));
+    m.put(new TOP(addrs[switchpoint + 1], null));
     assertTrue(m.getbitsMask() == 127);
 
-    m.clear();  // size is 33, so no shrinkage
+    m.clear();  // size is above switchpoint, so no shrinkage
     assertTrue(m.getbitsMask() == 127);
     m.clear();  // size is 0, so first time shrinkage a possibility
     assertTrue(m.getbitsMask() == 127);  // but we don't shrink on first time
@@ -160,8 +162,8 @@ public class JCasHashMapTest extends Tes
     
   }
 
-  private void fill32 (JCasHashMap m) {
-    for (int i = 0; i < 32; i++) {
+  private void fill (int n, JCasHashMap m) {
+    for (int i = 0; i < n; i++) {
       final int key = addrs[i];
       TOP fs = new TOP(key, null);
       m.put(fs);