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} */
