Smalyshev has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/396474 )

Change subject: Fix Updater performance issue
......................................................................

Fix Updater performance issue

Do not use removeAll - just assemble the collections in straightforward way.

Bug: T182464
Change-Id: I02530690e877cc1b60f11dc2fc8b97622c742d68
---
M tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
1 file changed, 22 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/rdf 
refs/changes/74/396474/1

diff --git 
a/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java 
b/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
index e6e891e..8be934d 100644
--- a/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
+++ b/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/RdfRepository.java
@@ -433,6 +433,8 @@
 
         List<Statement> insertStatements = new ArrayList<>();
         List<Statement> entityStatements = new ArrayList<>();
+        List<Statement> statementStatements = new ArrayList<>();
+        List<Statement> aboutStatements = new ArrayList<>();
         Set<String> valueSet = new HashSet<>();
 
         for (final Change change : changes) {
@@ -442,7 +444,26 @@
             }
             entityIds.add(change.entityId());
             insertStatements.addAll(change.getStatements());
-            
entityStatements.addAll(filtered(change.getStatements()).withSubject(uris.entity()
 + change.entityId()));
+            // Specialized collections:
+            // entityStatements - subject is entity
+            // statementStatements - subject is any statement
+            // aboutStatements - not entity, not statement, not value and not 
reference
+            change.getStatements().forEach(statement -> {
+                String s = statement.getSubject().stringValue();
+                if (s.equals(uris.entity() + change.entityId())) {
+                    entityStatements.add(statement);
+                }
+                if (s.startsWith(uris.statement())) {
+                    statementStatements.add(statement);
+                }
+                if(!s.equals(uris.entity() + change.entityId())
+                        && !s.startsWith(uris.statement())
+                        && !s.startsWith(uris.value())
+                        && !s.startsWith(uris.reference())
+                ) {
+                    aboutStatements.add(statement);
+                }
+            });
             valueSet.addAll(change.getCleanupList());
         }
 
@@ -456,14 +477,7 @@
         b.bindStatements("insertStatements", insertStatements);
         b.bindValues("entityStatements", entityStatements);
 
-        Collection<Statement> statementStatements = 
filtered(insertStatements).withSubjectStarts(uris.statement());
         b.bindValues("statementStatements", statementStatements);
-
-        Collection<Statement> aboutStatements = new 
HashSet<>(insertStatements);
-        aboutStatements.removeAll(entityStatements);
-        aboutStatements.removeAll(statementStatements);
-        
aboutStatements.removeAll(filtered(insertStatements).withSubjectStarts(uris.value()));
-        
aboutStatements.removeAll(filtered(insertStatements).withSubjectStarts(uris.reference()));
         b.bindValues("aboutStatements", aboutStatements);
 
         if (!valueSet.isEmpty()) {

-- 
To view, visit https://gerrit.wikimedia.org/r/396474
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I02530690e877cc1b60f11dc2fc8b97622c742d68
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <smalys...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to