hyrise/hyrise — pull request #302 by kaihowl (2014-01-28 13:07:44+00:00)
Title: Eliminated shared_count contention in AbstractTable

The static_pointer_cast on the AbstractDictionary implicitly creates a
shared pointer on the dictionary. This increases the shared_count for
this dictionary. Since this is an atomic operation, the lock might be
contended for heavily. This was the case in a pipelining scenario, where
multiple pointer calculators are based on the same table/dictionaries to
account for the chunks passed on to the next operator; with an
increasing number of chunks, the lock on the shared pointer became the
main bottleneck causing significant degradation in performance.

The lock has been eliminated by using raw pointers. It's not necessary
to have a shared_ptr here, since the table already owns the dictionary.