[
https://issues.apache.org/jira/browse/JENA-1044?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy Seaborne resolved JENA-1044.
---------------------------------
Resolution: Fixed
Assignee: Andy Seaborne
Fix Version/s: Jena 3.0.1
> 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
> Assignee: Andy Seaborne
> Priority: Minor
> Fix For: Jena 3.0.1
>
> Attachments: PercentTime_clean.png, RuntimeException_clean.png
>
>
> 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
> {noformat}
> @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;
> }
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)