Benjamin Geer created JENA-1121:
-----------------------------------

             Summary: Performance regression in Jena 3.0.1 / Fuseki 2.3.1
                 Key: JENA-1121
                 URL: https://issues.apache.org/jira/browse/JENA-1121
             Project: Apache Jena
          Issue Type: Bug
          Components: Jena
    Affects Versions: Fuseki 2.3.1, Jena 3.0.1, Jena 3.1.0, Fuseki 2.4.0
         Environment: Mac OS X 10.10.5, iMac, 3.4 GHz Intel Core i7, 32 GB RAM
            Reporter: Benjamin Geer
            Priority: Critical


We seem to have encountered a severe performance regression in Jena 3.0.1 / 
Fuseki 2.3.1 as compared with Jena 3.0.0 / Fuseki 2.3.0. A number of our 
queries are running between 2 and 20 times slower. Here's one small example 
with configuration for Fuseki. With Fuseki 2.3.0, the query below takes about 
200 milliseconds. With Fuseki 2.3.1, it takes 9 seconds. I've also tried it 
with the latest Fuseki snapshot 
(apache-jena-fuseki-2.4.0-20160117.183513-33.zip), and got the same result as 
with the 2.3.1 release.

Here's the test data and configuration:

https://www.dropbox.com/s/b9aepexij5e7noj/jena-performance-test.zip?dl=0

Here's the query:

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix knora-base: <http://www.knora.org/ontology/knora-base#>

SELECT DISTINCT
    ?resourceIri
    ?resourceLabel
    (SAMPLE(?anyMatch) AS ?match)

WHERE {
    BIND(STR("de") AS ?preferredLanguage)
    BIND(STR("en") AS ?fallbackLanguage)

    ?s <http://jena.apache.org/text#query> 'Zeitglöcklein' .

    MINUS {
        ?s knora-base:isDeleted true .
    }

    OPTIONAL {
        ?s a ?valueObjectType .
        ?valueObjectType rdfs:subClassOf+ knora-base:Value .
        ?resIri ?resourceProperty ?s .
        ?s knora-base:valueHasString ?literal .

        OPTIONAL {
            ?resourceProperty rdfs:label 
?preferredLanguageResourcePropertyLabel .
            FILTER (LANG(?preferredLanguageResourcePropertyLabel) = 
?preferredLanguage) .
        }

        OPTIONAL {
            ?resourceProperty rdfs:label ?fallbackLanguageResourcePropertyLabel 
.
            FILTER (LANG(?fallbackLanguageResourcePropertyLabel) = 
?fallbackLanguage) .
        }

        OPTIONAL {
            ?resourceProperty rdfs:label ?anyLanguageResourcePropertyLabel .
        }

        BIND(COALESCE(str(?preferredLanguageResourcePropertyLabel), 
str(?fallbackLanguageResourcePropertyLabel), 
str(?anyLanguageResourcePropertyLabel)) AS ?propertyLabel)

        BIND(CONCAT(STR(?valueObjectType), "|", STR(?propertyLabel), "|", 
STR(?literal)) AS ?anyMatch)

        MINUS {
            ?resIri knora-base:isDeleted true .
        }
    }

    BIND(COALESCE(?resIri, ?s) AS ?resourceIri)

    ?resourceIri a ?resourceClass .
    ?resourceClass rdfs:subClassOf+ knora-base:Resource .
    ?resourceIri rdfs:label ?resourceLabel .
}

GROUP BY
    ?resourceIri
    ?resourceLabel

ORDER BY ?resourceIri

Best regards,
Benjamin Geer



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to