You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2010/01/06 06:32:43 UTC

svn commit: r896323 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis: cache/ cache/decorators/ cache/impl/ executor/

Author: cbegin
Date: Wed Jan  6 05:32:42 2010
New Revision: 896323

URL: http://svn.apache.org/viewvc?rev=896323&view=rev
Log:
ibatis-724 fixed: Performance inefficiency using org.apache.ibatis.cache.Cache#hasKey

Modified:
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/Cache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/FifoCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LoggingCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LruCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/ScheduledCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SerializedCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SoftCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SynchronizedCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/TransactionalCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/WeakCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/impl/PerpetualCache.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/Cache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/Cache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/Cache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/Cache.java Wed Jan  6 05:32:42 2010
@@ -12,8 +12,6 @@
 
   Object getObject(Object key);
 
-  boolean hasKey(Object key);
-
   Object removeObject(Object key);
 
   void clear();

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/FifoCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/FifoCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/FifoCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/FifoCache.java Wed Jan  6 05:32:42 2010
@@ -41,10 +41,6 @@
     return delegate.getObject(key);
   }
 
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
-  }
-
   public Object removeObject(Object key) {
     return delegate.removeObject(key);
   }

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LoggingCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LoggingCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LoggingCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LoggingCache.java Wed Jan  6 05:32:42 2010
@@ -32,17 +32,14 @@
 
   public Object getObject(Object key) {
     requests++;
-    if (hasKey(key)) {
+    final Object value = delegate.getObject(key);
+    if (value != null) {
       hits++;
     }
     if (log.isDebugEnabled()) {
       log.debug("Cache Hit Ratio [" + getId() + "]: " + getHitRatio());
     }
-    return delegate.getObject(key);
-  }
-
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
+    return value;
   }
 
   public Object removeObject(Object key) {

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LruCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LruCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LruCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/LruCache.java Wed Jan  6 05:32:42 2010
@@ -51,10 +51,6 @@
 
   }
 
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
-  }
-
   public Object removeObject(Object key) {
     return delegate.removeObject(key);
   }

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/ScheduledCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/ScheduledCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/ScheduledCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/ScheduledCache.java Wed Jan  6 05:32:42 2010
@@ -42,14 +42,6 @@
     }
   }
 
-  public boolean hasKey(Object key) {
-    if (clearWhenStale()) {
-      return false;
-    } else {
-      return delegate.hasKey(key);
-    }
-  }
-
   public Object removeObject(Object key) {
     clearWhenStale();
     return delegate.removeObject(key);

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SerializedCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SerializedCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SerializedCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SerializedCache.java Wed Jan  6 05:32:42 2010
@@ -35,10 +35,6 @@
     return object == null ? null : deserialize((byte[]) object);
   }
 
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
-  }
-
   public Object removeObject(Object key) {
     return delegate.removeObject(key);
   }

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SoftCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SoftCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SoftCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SoftCache.java Wed Jan  6 05:32:42 2010
@@ -59,10 +59,6 @@
     return result;
   }
 
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
-  }
-
   public Object removeObject(Object key) {
     removeGarbageCollectedItems();
     return delegate.removeObject(key);

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SynchronizedCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SynchronizedCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SynchronizedCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/SynchronizedCache.java Wed Jan  6 05:32:42 2010
@@ -43,15 +43,6 @@
     }
   }
 
-  public boolean hasKey(Object key) {
-    acquireReadLock();
-    try {
-      return delegate.hasKey(key);
-    } finally {
-      releaseReadLock();
-    }
-  }
-
   public Object removeObject(Object key) {
     acquireWriteLock();
     try {

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/TransactionalCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/TransactionalCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/TransactionalCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/TransactionalCache.java Wed Jan  6 05:32:42 2010
@@ -32,10 +32,6 @@
     return delegate.getObject(key);
   }
 
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
-  }
-
   public ReadWriteLock getReadWriteLock() {
     return delegate.getReadWriteLock();
   }

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/WeakCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/WeakCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/WeakCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/decorators/WeakCache.java Wed Jan  6 05:32:42 2010
@@ -59,10 +59,6 @@
     return result;
   }
 
-  public boolean hasKey(Object key) {
-    return delegate.hasKey(key);
-  }
-
   public Object removeObject(Object key) {
     removeGarbageCollectedItems();
     return delegate.removeObject(key);

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/impl/PerpetualCache.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/impl/PerpetualCache.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/impl/PerpetualCache.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/cache/impl/PerpetualCache.java Wed Jan  6 05:32:42 2010
@@ -37,10 +37,6 @@
     return cache.get(key);
   }
 
-  public boolean hasKey(Object key) {
-    return cache.containsKey(key);
-  }
-
   public Object removeObject(Object key) {
     return cache.remove(key);
   }

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java Wed Jan  6 05:32:42 2010
@@ -78,8 +78,9 @@
     try {
       queryStack++;
       CacheKey key = createCacheKey(ms, parameter, rowBounds);
-      if (localCache.hasKey(key)) {
-        list = (List) localCache.getObject(key);
+      final List cachedList = (List) localCache.getObject(key);
+      if (cachedList != null) {
+        list = cachedList;
       } else {
         localCache.putObject(key, EXECUTION_PLACEHOLDER);
         try {
@@ -134,7 +135,7 @@
   }
 
   public boolean isCached(MappedStatement ms, CacheKey key) {
-    return localCache.hasKey(key);
+    return localCache.getObject(key) != null;
   }
 
   public void commit(boolean required) throws SQLException {

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java?rev=896323&r1=896322&r2=896323&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java Wed Jan  6 05:32:42 2010
@@ -49,8 +49,9 @@
         try {
           if (ms.isUseCache()) {
             CacheKey key = createCacheKey(ms, parameterObject, rowBounds);
-            if (cache.hasKey(key)) {
-              return (List) cache.getObject(key);
+            final List cachedList = (List) cache.getObject(key);
+            if (cachedList != null) {
+              return cachedList;
             } else {
               List list = delegate.query(ms, parameterObject, rowBounds, resultHandler);
               tcm.putObject(cache, key, list);