More Info

Revision 700098

(Back to digest)
 

Optimization in KDE Base

Sebastian Trueg committed changes in /branches/work/soprano2:

Added class BindingSet which holds a copy of one row of query result bindings for caching purposes.

Internally it is nothing more than a QHash but it is quite useful when you want to iterate over a query result and use each row to do something to the model (again the problem that iterators are invalidated by model actions)

Now that I could finally test my optimized inferencing algo I found the last (hopefully) bugs and it works. It got a bit more complicated but I think i did a good job in designing the code and I think I never before documented code this well (which still does not mean that everyone can understand it from the start ;)

The tests were very encouraging. I got a major speed improvement by my optimizations.

Maybe I will write my algo down in a little paper these days, just for fun (and to make Nepomuk reimplement it in java ;)

File Changes

Added 2 files
/branches/work/soprano2/soprano
 
/bindingset.cpp
 
/bindingset.h
Modified 12 files
/branches/work/soprano2
 
/soprano/CMakeLists.txt
 
/soprano/queryresultiterator.cpp
 
/soprano/queryresultiterator.h
 
/backends/sesame2/sesame2iterator.cpp
 
/backends/sesame2/sesame2iterator.h
 
/soprano/inference/inferencemodel.cpp
 
/soprano/inference/inferencerule.cpp
 
/soprano/inference/inferencerule.h
 
/soprano/inference/nodepattern.cpp
 
/soprano/inference/nodepattern.h
 
/soprano/inference/statementpattern.cpp
 
/soprano/inference/statementpattern.h
14 files changed in total