Review Request 108370: Use a generic hash function for KDevplatform types

Olivier Jean de Gaalon olivier.jg at gmail.com
Sat Jan 12 15:48:21 UTC 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/108370/
-----------------------------------------------------------

(Updated Jan. 12, 2013, 3:48 p.m.)


Review request for KDevelop.


Changes
-------

This little patch will have duchainify dump the type repository stats after running so you can see how many clashes you have.
I'd be particularly interested to see the delta for a non-c++ project.

As an afternote, my 80% figure actually is only after using the KDevHash in C++ lang support as well.


Description
-------

Implement a generic hash function (minor variation of one-at-a-time) which can be used to hash the data of item repository data classes.
The good:
    Removes around 80% of bucket clashes and 100% of actually equal hashes for different types in the real-world C++ cases I've tested.
    No need to pull numbers out of a hat and hope you didn't clash.
The bad:
    The hash function is more expensive, and so might cancel out the gains in speed, at least in smaller projects (hard to create a real-world benchmark that can show the difference)
The meh:
    Either way it makes no visually discernable difference, so it should probably be seen from an ease-of-use perspective.

I've had this sitting around for a while, but here it is for reviewer's pleasure.


Diffs
-----

  language/duchain/declarationid.h 7caccf5 
  language/duchain/identifier.cpp 4cfc90e 
  language/duchain/indexeddeclaration.h 6f486ab 
  language/duchain/indexedducontext.h d972202 
  language/duchain/instantiationinformation.cpp dbc236d 
  language/duchain/referencecounting.cpp a4dece2 
  language/duchain/types/abstracttype.cpp e7f7d99 
  language/duchain/types/arraytype.cpp 673f691 
  language/duchain/types/constantintegraltype.cpp 4cb8a36 
  language/duchain/types/delayedtype.cpp 5506a45 
  language/duchain/types/enumerationtype.cpp 4901136 
  language/duchain/types/enumeratortype.cpp a3d3ab6 
  language/duchain/types/functiontype.cpp bc6b842 
  language/duchain/types/integraltype.cpp f40f05b 
  language/duchain/types/pointertype.cpp fbb2143 
  language/duchain/types/referencetype.cpp 8919f7f 
  language/duchain/types/structuretype.cpp 27b0088 
  language/duchain/types/typealiastype.cpp 903e2e1 
  language/duchain/types/unsuretype.cpp cba3984 
  util/CMakeLists.txt 29de126 
  util/kdevhash.h PRE-CREATION 

Diff: http://git.reviewboard.kde.org/r/108370/diff/


Testing
-------


File Attachments (updated)
----------------

Patch to make duchainify show itemrepository stats
  http://git.reviewboard.kde.org/media/uploaded/files/2013/01/12/duchainifywithitemrepositorystats.diff


Thanks,

Olivier Jean de Gaalon

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20130112/43eaa7df/attachment.html>


More information about the KDevelop-devel mailing list