Repository: ignite
Updated Branches:
  refs/heads/ignite-2505 [created] 31df18130


ignite-2505 : Optimized collection instantiation in 
IgniteTxImplicitSingleStateImpl.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a97084f4
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a97084f4
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a97084f4

Branch: refs/heads/ignite-2505
Commit: a97084f4f9f5b96d4c3b116de84e68ca69dea0fb
Parents: d2a107b
Author: Ilya Lantukh <[email protected]>
Authored: Mon Feb 1 14:27:24 2016 +0300
Committer: Ilya Lantukh <[email protected]>
Committed: Mon Feb 1 14:27:24 2016 +0300

----------------------------------------------------------------------
 .../IgniteTxImplicitSingleStateImpl.java        | 25 +++++++++++---------
 1 file changed, 14 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a97084f4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
index 3e0231e..e02e218 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxImplicitSingleStateImpl.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.ignite.IgniteCheckedException;
@@ -45,8 +46,10 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
     /** */
     private GridCacheContext cacheCtx;
 
-    /** */
-    private IgniteTxEntry entry;
+    /**
+     * Entry is stored as singleton list for performance optimization.
+     */
+    private List<IgniteTxEntry> entry;
 
     /** */
     private boolean init;
@@ -182,15 +185,15 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
 
     /** {@inheritDoc} */
     @Override public IgniteTxEntry entry(IgniteTxKey key) {
-        if (entry != null && entry.txKey().equals(key))
-            return entry;
+        if (entry != null && entry.get(0).txKey().equals(key))
+            return entry.get(0);
 
         return null;
     }
 
     /** {@inheritDoc} */
     @Override public boolean hasWriteKey(IgniteTxKey key) {
-        return entry != null && entry.txKey().equals(key);
+        return entry != null && entry.get(0).txKey().equals(key);
     }
 
     /** {@inheritDoc} */
@@ -203,7 +206,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
         if (entry != null) {
             HashSet<IgniteTxKey> set = new HashSet<>(3, 0.75f);
 
-            set.add(entry.txKey());
+            set.add(entry.get(0).txKey());
 
             return set;
         }
@@ -213,7 +216,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
 
     /** {@inheritDoc} */
     @Override public Collection<IgniteTxEntry> writeEntries() {
-        return entry != null ? Arrays.asList(entry) : 
Collections.<IgniteTxEntry>emptyList();
+        return entry != null ? entry : Collections.<IgniteTxEntry>emptyList();
     }
 
     /** {@inheritDoc} */
@@ -223,7 +226,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
 
     /** {@inheritDoc} */
     @Override public Map<IgniteTxKey, IgniteTxEntry> writeMap() {
-        return entry != null ? F.asMap(entry.txKey(), entry) : 
Collections.<IgniteTxKey, IgniteTxEntry>emptyMap();
+        return entry != null ? F.asMap(entry.get(0).txKey(), entry.get(0)) : 
Collections.<IgniteTxKey, IgniteTxEntry>emptyMap();
     }
 
     /** {@inheritDoc} */
@@ -238,7 +241,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
 
     /** {@inheritDoc} */
     @Override public Collection<IgniteTxEntry> allEntries() {
-        return entry != null ? Arrays.asList(entry) : 
Collections.<IgniteTxEntry>emptyList();
+        return entry != null ? entry : Collections.<IgniteTxEntry>emptyList();
     }
 
     /** {@inheritDoc} */
@@ -261,7 +264,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
     @Override public void addEntry(IgniteTxEntry entry) {
         assert this.entry == null : "Entry already set [cur=" + this.entry + 
", new=" + entry + ']';
 
-        this.entry = entry;
+        this.entry = Collections.singletonList(entry);
     }
 
     /** {@inheritDoc} */
@@ -271,7 +274,7 @@ public class IgniteTxImplicitSingleStateImpl extends 
IgniteTxLocalStateAdapter {
 
     /** {@inheritDoc} */
     @Override public IgniteTxEntry singleWrite() {
-        return entry;
+        return entry != null ? entry.get(0) : null;
     }
 
     /** {@inheritDoc} */

Reply via email to