<table><tr><td style="">mwolff added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D12746">View Revision</a></tr></table><br /><div><div><p>so what's your plan with this now? Do you actually want to move this forward? Then we need to find a good solution that works everywhere. The numbers aren't that useful on their own, as there the current implementation which is trivial and has no external dependencies is apparently still the best by a margin...</p>

<p>I'm really quite unsure if we want to go down this route. If we'd decide to do that, then it would need to be done also in the other places, most notably to replace our actual performance sensitive databases. The current topconteext data loading is pretty fast. What's slow, or at least used to be slow, is hammering the big databases we have (i.e. AbstractItemRepository). *These* are the slow ones, since they are actually used a lot. Still, the current implementation was much faster than lmbd the last time I tried. The reason is that we can access and insert quickly, and lookup is O(1) since it's an on-disk hash map. But actually, I would very much appreciate getting *rid* of that complicated code and replacing it by something else. The reason is that we still have lots of crash reports in that code that are quasi impossible to debug/reproduce. Also, if we'd use an established data base implementation, we could potentially make access cross-process safe, which I would really like to see in the long term.</p>

<p>So before I do any review, we first need to talk about the above.</p></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D12746#inline-65375">View Inline</a><span style="color: #4b4d51; font-weight: bold;">test_topcontextstore.cpp:76</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// PASS   : TestTopDUContextStore::benchTopContextStore()</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// QINFO  : TestTopDUContextStore::benchTopContextStoreRead() Reading 1500 keys: 0.13 seconds</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// PASS   : TestTopDUContextStore::benchTopContextStoreRead()</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">you are missing the 6k results here</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D12746#inline-65377">View Inline</a><span style="color: #4b4d51; font-weight: bold;">test_topcontextstore.cpp:145</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// PASS   : TestTopDUContextStore::benchTopContextStoreRead()</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// QINFO  : TestTopDUContextStore::benchTopContextStoreRemove() Removing 1500 keys: 7.234 seconds</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// PASS   : TestTopDUContextStore::benchTopContextStoreRemove()</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">that's pretty bad in comparison</p>

<p style="padding: 0; margin: 8px;">note that we currently just rewrite the complete file, which you can't do when you use one big data base</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D12746#inline-65376">View Inline</a><span style="color: #4b4d51; font-weight: bold;">test_topcontextstore.cpp:355</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">// this is actual TopDUContext data from KDevelop itself</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #aa4000">unsigned</span> <span style="color: #aa4000">char</span> <span class="n">realDUData</span><span class="p">[]</span> <span style="color: #aa2211">=</span> <span class="p">{</span><span style="color: #601200">64</span><span class="p">,</span> <span style="color: #601200">6</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">255</span><span class="p">,</span> <span style="color: #601200">255</span><span class="p">,</span> <span style="color: #601200">255</span><span class="p">,</span> <span style="color: #601200">127</span><span class="p">,</span> <span style="color: #601200">255</span><span class="p">,</span> <span style="color: #601200">255</span><span class="p">,</span> <span style="color: #601200">255</span><span class="p">,</span> <span style="color: #601200">127</span><span class="p">,</span> 
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #601200">64</span><span class="p">,</span> <span style="color: #601200">64</span><span class="p">,</span> <span style="color: #601200">140</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">2</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">1</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">1</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">127</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">1</span><span class="p">,</span> 
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">O_o make it a separate data file and read it from a resource instead of embedding it manually</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D12746">https://phabricator.kde.org/D12746</a></div></div><br /><div><strong>To: </strong>rjvbb, brauch<br /><strong>Cc: </strong>mwolff, kdevelop-devel, antismap, iodelay, vbspam, njensen, geetamc, Pilzschaf, akshaydeo, surgenight, arrowdodger<br /></div>