You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commonsrdf.apache.org by an...@apache.org on 2015/03/30 03:09:57 UTC
[03/18] incubator-commonsrdf git commit: Optimise
GraphImpl.add(Triple)
Optimise GraphImpl.add(Triple)
Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/7e42caee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/7e42caee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/7e42caee
Branch: refs/heads/master
Commit: 7e42caeef4d8eb3d784358b8b43b4d1262b567cc
Parents: 243e85c
Author: Peter Ansell <p_...@yahoo.com>
Authored: Sat Mar 28 20:31:32 2015 +1100
Committer: Peter Ansell <p_...@yahoo.com>
Committed: Sat Mar 28 20:32:09 2015 +1100
----------------------------------------------------------------------
.../apache/commons/rdf/simple/GraphImpl.java | 34 ++++++++++++--------
1 file changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/7e42caee/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
----------------------------------------------------------------------
diff --git a/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java b/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
index 3fd4bca..5f81048 100644
--- a/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
+++ b/simple/src/main/java/org/apache/commons/rdf/simple/GraphImpl.java
@@ -19,7 +19,6 @@ package org.apache.commons.rdf.simple;
import java.util.LinkedHashSet;
import java.util.Objects;
-import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -52,10 +51,28 @@ final class GraphImpl implements Graph {
@Override
public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
- add(new TripleImpl(Objects.requireNonNull(subject),
- Objects.requireNonNull(predicate),
- Objects.requireNonNull(object)));
+ BlankNodeOrIRI newSubject = (BlankNodeOrIRI) internallyMap(subject);
+ IRI newPredicate = (IRI) internallyMap(predicate);
+ RDFTerm newObject = internallyMap(object);
+ triples.add(factory.createTriple(newSubject, newPredicate, newObject));
+ }
+ @Override
+ public void add(Triple triple) {
+ BlankNodeOrIRI newSubject = (BlankNodeOrIRI) internallyMap(triple
+ .getSubject());
+ IRI newPredicate = (IRI) internallyMap(triple.getPredicate());
+ RDFTerm newObject = internallyMap(triple.getObject());
+ // Check if any of the object references changed during the mapping, to
+ // avoid creating a new Triple object if possible
+ if (newSubject == triple.getSubject()
+ && newPredicate == triple.getPredicate()
+ && newObject == triple.getObject()) {
+ triples.add(triple);
+ } else {
+ triples.add(factory.createTriple(newSubject, newPredicate,
+ newObject));
+ }
}
private <T extends RDFTerm> RDFTerm internallyMap(T object) {
@@ -87,15 +104,6 @@ final class GraphImpl implements Graph {
}
@Override
- public void add(Triple triple) {
- BlankNodeOrIRI subject = (BlankNodeOrIRI) internallyMap(triple
- .getSubject());
- IRI predicate = (IRI) internallyMap(triple.getPredicate());
- RDFTerm object = internallyMap(triple.getObject());
- triples.add(factory.createTriple(subject, predicate, object));
- }
-
- @Override
public void clear() {
triples.clear();
}