Revision 700098

Go back to digest for 19th August 2007

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