found another minor optimziation. if the head of the path already has the 
extend(labels), then there is no need to split the path. This can significantly 
reduce object creation if label applications are repeated.


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

Branch: refs/heads/tp32
Commit: c8a68946318cbc1ed48f1e7d1e8902d52def10bc
Parents: deaf38a
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Wed Nov 2 09:36:21 2016 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Wed Nov 2 09:36:21 2016 -0600

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/util/ImmutablePath.java        | 2 +-
 .../gremlin/process/traversal/step/util/MutablePath.java          | 2 +-
 .../process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java   | 3 +--
 3 files changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c8a68946/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
index 6b67c45..18f0870 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
@@ -78,7 +78,7 @@ public class ImmutablePath implements Path, Serializable, 
Cloneable {
 
     @Override
     public Path extend(final Set<String> labels) {
-        if (labels.isEmpty())
+        if (labels.isEmpty() || this.currentLabels.containsAll(labels))
             return this;
         else {
             final Set<String> newLabels = new LinkedHashSet<>();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c8a68946/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
index e9fc093..c87e627 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
@@ -80,7 +80,7 @@ public class MutablePath implements Path, Serializable {
 
     @Override
     public Path extend(final Set<String> labels) {
-        if (!labels.isEmpty())
+        if (!labels.isEmpty() && !this.labels.get(this.labels.size() - 
1).containsAll(labels))
             this.labels.get(this.labels.size() - 1).addAll(labels);
         return this;
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c8a68946/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
----------------------------------------------------------------------
diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
index 7064cd0..49f19e4 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
@@ -75,8 +75,7 @@ public class B_LP_O_P_S_SE_SL_Traverser<T> extends 
B_O_S_SE_SL_Traverser<T> {
 
     @Override
     public void addLabels(final Set<String> labels) {
-        if (!labels.isEmpty())
-            this.path = this.path.extend(labels);
+        this.path = this.path.extend(labels);
     }
 
     @Override

Reply via email to