Robert Mercer created JENA-1044:
-----------------------------------

             Summary: Significant performance improvement in E_Bound
                 Key: JENA-1044
                 URL: https://issues.apache.org/jira/browse/JENA-1044
             Project: Apache Jena
          Issue Type: Improvement
            Reporter: Robert Mercer
            Priority: Minor


I would like to suggest a significant performance improvement that I've seen 
occurring in various setups. Basically the issue occurs if you do a 
bound(?somethingthatsnotbound) this causes an "internal" runtime exception to 
be thrown down in the code which in turn is caught and handled by returning a 
false from E_Bound. This only occurs in the case of a bound(?x) returning 
false. This is an issue as runtimeexceptions are very costly and if you do this 
quite a lot in your query or attempt to do many queries that have lots of 
bound() functions in them you can end up with significant performance 
degradation. 

Suggested fix in E_Bound.java

@Override
        public NodeValue evalSpecial(Binding binding, FunctionEnv env)
        { 
                if (expr instanceof NodeValue){
                        return NodeValue.TRUE; // probably just our code has 
this case as we do some prebindings.
                } else {
                        return binding.contains(expr.asVar()) ? NodeValue.TRUE 
: NodeValue.FALSE; 
                }
        } 




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

Reply via email to