From 88b3ecdc6f86a96ae90ab875dafa644452bd4d9a Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 3 Nov 2014 13:13:55 +0100 Subject: [PATCH] avoid Map.Entry instances creation: gnu.trove.THashMap$EntryView$EntryIterator.objectAtIndex: 1,354,005,709,608 (10.80%) bytes in 56,416,904,567 (15.09%) objects (avg size 24 bytes) gnu.trove.THashMap$Entry: 1,354,005,709,608 (10.80%) bytes in 56,416,904,567 (15.09%) objects (avg size 24 bytes) --- .../intellij/util/indexing/ValueContainerImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java index 90f29dccb4d1..55586b5e8b76 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/ValueContainerImpl.java @@ -184,8 +184,10 @@ class ValueContainerImpl extends UpdatableValueContainer implement }; } else { return new ValueIterator() { - private Map.Entry current; - final Iterator> iterator = ((THashMap)myInputIdMapping).entrySet().iterator(); + private Value current; + private Object currentValue; + private final THashMap myMapping = ((THashMap)myInputIdMapping); + private final Iterator iterator = myMapping.keySet().iterator(); @Override public boolean hasNext() { @@ -194,7 +196,9 @@ class ValueContainerImpl extends UpdatableValueContainer implement @Override public Value next() { - Value next = (current = iterator.next()).getKey(); + current = iterator.next(); + Value next = current; + currentValue = myMapping.get(next); if (next == myNullValue) next = null; return next; } @@ -219,7 +223,7 @@ class ValueContainerImpl extends UpdatableValueContainer implement @Override public Object getFileSetObject() { if (current == null) throw new IllegalStateException(); - return current.getValue(); + return currentValue; } }; }