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

Olivier Jean de Gaalon olivier.jg at gmail.com
Fri Mar 15 06:21:32 UTC 2013


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

(Updated March 15, 2013, 6:21 a.m.)


Review request for KDevelop.


Changes
-------

This removes the finalize step. I've previously benchmarked and it doesn't seem to make much of a difference in clashes. I'll benchmark again before I push to be sure, but here's a diff that works with git master for review.


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 (updated)
-----

  language/CMakeLists.txt a698bf2 
  language/duchain/declarationid.h 7caccf5 
  language/duchain/identifier.cpp ef6dbe3 
  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 

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


Testing
-------


File Attachments
----------------

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/20130315/d238b987/attachment-0001.html>


More information about the KDevelop-devel mailing list